def __init__(self, id, target, inputQueue, outputQueue, checkPeriod=None, preHook=None, preExtraArgs=None, postHook=None, postExtraArgs=None, *args, **kwargs): """ Build an object... Arguments: + id: integer that can identify the worker between others. + target: Method that each of the parallel process will be executing with the input arguments. It must be callable with objects in the argin queue as parameters. + inputQueue: multithreading queue where each element is data input for the method that will be executed by the child process. + outputQueue: multithreading queue where the results will be stored after the execution. * {pre, post}Hook: callable objects to be executed before or after the target. * {pre, post}ExtraArgs: dictionaries that will be passed to hooks. """ super(Worker, self).__init__(*args, **kwargs) self.__id = id if not callable(target): raise AssertionError("Target must be callable object") else: self.__target = target self.__input = inputQueue self.__currentArgin = None self.__output = outputQueue self.__ctr = _Value(_ulonglong, 0) self.__computationTime = _Value(_float, 0.0) self.__currentArgout = None self.__checkPeriod = 60 # seconds self.checkPeriod = checkPeriod # Events --- self.__events = _EventManager() self.__prepared = _Event() self.__prepared.clear() self.__internalEvent = _Event() self.__internalEvent.clear() # Hooks --- self.__preHook = None self.__preExtraArgs = None self.__postHook = None self.__postExtraArgs = None self.preHook = preHook self.preExtraArgs = preExtraArgs self.postHook = postHook self.postExtraArgs = postExtraArgs # thread and process --- self.__monitor = _Thread(target=self.__thread) self.__worker = None self.__monitor.setDaemon(True) self.__monitor.start() self.__workerPausedFlag = False
def __init__(self, manager=None, **kwargs): channel = kwargs.get("channel", Process.channel) super(Process, self).__init__(channel=channel) self._manager = manager self._bridge = None self._running = _Value("b", False)
def __init__(self, *args, **kwargs): super(Process, self).__init__(*args, **kwargs) self.running = _Value("b", False) self.process = _Process(target=self._run, args=(self.run, self.running,)) self.parent, self.child = _Pipe()
def __init__(self, *args, **kwargs): super(Process, self).__init__(*args, **kwargs) self._running = _Value("b", False) self.process = _Process(target=self._run, args=(self.run, self._running,)) self.parent, self.child = _Pipe()