Esempio n. 1
0
 def __init__(self,worksize):
     '''
     @jsize:工作池的大小
     @wsize:工作的线程数量
     '''
     Queue.__init__(self)
     self.workerpool=[]
     self.jobpool=Queue()
     self.worksize=worksize
     for x in range(self.worksize): #@UnusedVariable
         wk=Worker(self.jobpool)
         wk.start()
         self.workerpool.append(wk)
     self.__alive=True
Esempio n. 2
0
class WorkerPool(Queue):
    """一个工作池,同时多个线程进行任务"""
    
    def __init__(self,worksize):
        '''
        @jsize:工作池的大小
        @wsize:工作的线程数量
        '''
        Queue.__init__(self)
        self.workerpool=[]
        self.jobpool=Queue()
        self.worksize=worksize
        for x in range(self.worksize): #@UnusedVariable
            wk=Worker(self.jobpool)
            wk.start()
            self.workerpool.append(wk)
        self.__alive=True
        
    def execute(self,job,timeout=None):
        if self.__alive:
            self.jobpool.put(job, timeout)
        else:
            raise ShutdownException("WorkerPool be shutdown")
            
    def task_done(self):
        '''pass'''
        pass
    
    def wait(self):
        '''等待工作池中等所有任务完成'''
        self.jobpool.join()
    
    def isAlive(self):
        '''工作池是否为激活状态'''
        return self.__alive
    
    def shutdown(self):
        '''关闭线程池,调用该方法会处于等待状态,直到当前正在进行的任务完成为之'''
        for worker in self.workerpool:
            worker.stop()
        self.__alive=False