我有一个需要处理的项目列表,我希望能够并行处理它们以提高效率.但在处理一个项目的过程中,我可能会发现更多项目需要添加到列表中才能处理.
我查看过multiprocessing和concurrent库,但找不到此类队列的功能,可以在运行时或传递到池后进行修改.有没有满足我愿望的解决方案?
这里有一些代码演示了我想要的东西.
i = 0
jobs_to_be_processed = [f'job{(i:=i+1)}' for _ in range(5)]
def process_job(job):
if int(job[-1]) % 3 == 0:
jobs_to_be_processed.append(f'new job{(i:=i+1)}')
# do process job ...
pass
# Add jobs to a pool that allows `jobs_to_be_processed`
# to have jobs added while processing
pool = AsyncJobPool(jobs_to_be_processed)
pool.start()
pool.join()