first commit

This commit is contained in:
Tomas Dvorak
2026-04-13 17:46:58 +02:00
commit 6e8fedf534
234 changed files with 53808 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
import threading
from multiprocessing import Pipe, Process
def background(func):
"""
Runs the decorated function in a background thread.
"""
def background_func(*a, **kw):
threading.Thread(target=func, args=a, kwargs=kw).start()
return background_func
class ProcessWithReturnValue(Process):
"""
A process class that returns a value on join.
Uses a pipe to communicate the return value back to the parent process.
"""
def __init__(
self, group=None, target=None, name=None, args=(), kwargs=None, Verbose=None
):
if kwargs is None:
kwargs = {}
Process.__init__(
self, group=group, target=target, name=name, args=args, kwargs=kwargs
)
self._parent_conn, self._child_conn = Pipe()
self._target = target
self._args = args
self._kwargs = kwargs
def run(self):
if self._target is not None:
result = self._target(*self._args, **self._kwargs)
self._child_conn.send(result)
self._child_conn.close()
def join(self, *args):
Process.join(self, *args)
if self._parent_conn.poll():
return self._parent_conn.recv()
return None