def put_task(self, taskq):
if self.n_procs == 1 and len(self.files) == 1 and self.files[0]['type'] == 'merged':
# ALL DONE!
self.n_procs -= 1
taskq.put({'exit':True})
return 'ALLDONE'
elif len(self.files) == 0:
# NO WORK, TERMINATE WORKER
self.n_procs -= 1
taskq.put({'exit':True})
elif self.n_procs > 1 and len(self.files) < MIN_NUM_FILES_TO_MERGE_AT_ONCE:
# INSUFFICIENT WORK, TERMINATE WORKER
self.n_procs -= 1
taskq.put({'exit':True})
else:
# MAKE A TASK FOR THE WORKER
files_to_merge = self.files[:MAX_NUM_FILES_TO_MERGE_AT_ONCE]
self.files = self.files[MAX_NUM_FILES_TO_MERGE_AT_ONCE:]
out_filepath = get_tmp_path('merging-{}'.format(random.randrange(1e10)))
taskq.put({
'files_to_merge': files_to_merge,
'out_filepath': out_filepath,
})
评论列表
文章目录