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
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