예제 #1
0
파일: pool.py 프로젝트: bhdz/workersz-1
    def __init__(self,*args, **kwargs):

        if kwargs is not None:
            if 'count' in kwargs:
                self._wcnt = kwargs['count']
            else:
                self._wcnt = WorkerPool.DEFAULT_WORKER_COUNT 

            if 'all_done' in kwargs:
                self._all_done = kwargs['all_done']
            else:
                def ___pass( *args, **kwargs ):
                    pass
                self._all_done = ___pass
            if 'tick' in kwargs:
                self._tick = kwargs['tick'] 

        self._wpol = list([]) # all workers
        self._wbsy = dict({}) # busy
        self._wfre = list([]) # free
        self._tque = list([]) # task queue

        self._tick = WorkerPool.DEFAULT_TICK  # sleep time if all busy

        self._wrkr = SchedulerThread(0) # task schedule is worker
                

        self._task = Task()          # taks for scheduler
        self._task.target = self._task_schedule
        self._task.args = tuple()
        self._task.kwargs = dict()
        self._ball_done = False



        def _on_worker_task_done( worker ):
            """
            default calback for scheduler
            when some worker is done with a task
            it is appended to free workers queue
            also marked free in busy dict 
            """
            self._wfre.append(worker)
            self._wbsy[worker._id] = False

        self.____f = _on_worker_task_done 

        # pool initialization
 
        for i in xrange(1,self._wcnt+1) :
            w = WorkerThread(i)
            w._pool = self # back reference
            w._worker_task_done = self.____f
            self._wpol.append(w)
            self._wfre.append(w)
            self._wbsy[i] = False

        self._wrkr._target  = self._task_schedule
        self._wrkr._args = tuple()
        self._wrkr._kwargs = dict()
예제 #2
0
    def __init__(self, *args, **kwargs):

        if kwargs is not None:
            if 'count' in kwargs:
                self._wcnt = kwargs['count']
            else:
                self._wcnt = WorkerPool.DEFAULT_WORKER_COUNT

            if 'all_done' in kwargs:
                self._all_done = kwargs['all_done']
            else:

                def ___pass(*args, **kwargs):
                    pass

                self._all_done = ___pass
            if 'tick' in kwargs:
                self._tick = kwargs['tick']

        self._wpol = list([])  # all workers
        self._wbsy = dict({})  # busy
        self._wfre = list([])  # free
        self._tque = list([])  # task queue

        self._tick = WorkerPool.DEFAULT_TICK  # sleep time if all busy

        self._wrkr = SchedulerThread(0)  # task schedule is worker

        self._task = Task()  # taks for scheduler
        self._task.target = self._task_schedule
        self._task.args = tuple()
        self._task.kwargs = dict()
        self._ball_done = False

        def _on_worker_task_done(worker):
            """
            default calback for scheduler
            when some worker is done with a task
            it is appended to free workers queue
            also marked free in busy dict 
            """
            self._wfre.append(worker)
            self._wbsy[worker._id] = False

        self.____f = _on_worker_task_done

        # pool initialization

        for i in xrange(1, self._wcnt + 1):
            w = WorkerThread(i)
            w._pool = self  # back reference
            w._worker_task_done = self.____f
            self._wpol.append(w)
            self._wfre.append(w)
            self._wbsy[i] = False

        self._wrkr._target = self._task_schedule
        self._wrkr._args = tuple()
        self._wrkr._kwargs = dict()