def run(self, seedfile, progress_queue, output_queue):
task_total = count_file_linenum(seedfile)
proc_name = current_process().name
sys.stdout = ProcessIO(output_queue)
def progress_tracking(greenlet):
count = getattr(progress_tracking, 'count', 0) + 1
setattr(progress_tracking, 'count', count)
progress_queue.put((proc_name, count, task_total))
return greenlet
po = pool.Pool(self.pool_size)
with open(seedfile) as f:
for line in f:
g = po.apply_async(func=self.pool_task_with_timeout,
args=(line, ),
kwds=None,
callback=self.callback)
g.link(progress_tracking)
po.add(g)
try:
po.join()
except (KeyboardInterrupt, SystemExit) as ex:
print(str(ex))
po.kill()
评论列表
文章目录