def __init__(self, pool_size):
assert not self.__class__.POOL, "Can't create more than one: %s" % self.__class__
self.__class__.POOL = self
self.active_jobs = set()
self.pool_size = pool_size
self.jobs_queue = Queue()
def work():
while True:
func, name, job_id, parent_uuid = self.jobs_queue.get()
_set_thread_uuid(threading.get_ident(), parent_uuid)
_logger.debug('Starting job in real thread: %s', name or "<anonymous>")
func()
self.active_jobs.remove(job_id)
_logger.debug('ready for the next job')
for i in range(self.pool_size):
name = 'real-thread-%s' % i
thread = threading.Thread(target=work, name=name, daemon=True)
thread.start()
评论列表
文章目录