Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
        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()
Ejemplo n.º 5
0
        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()