我有一个小的工作池(4个)和一个非常大的任务列表(5000个)。 我正在使用池并使用map_async()发送任务。 由于我运行的任务相当长,因此我强制将chunksize设置为1,以防止一个长时间运行的进程阻塞一些较短的进程。
我想定期检查还有多少任务需要提交。 我知道最多会有4个任务处于活动状态,我关心的是还有多少任务需要处理。
我已经搜索了一下,但找不到任何人这样做。
以下是一些简单的代码以帮助理解:
import multiprocessing
import time
def mytask(num):
print('Started task, sleeping %s' % num)
time.sleep(num)
pool = multiprocessing.Pool(4)
jobs = pool.map_async(mytask, [1,2,3,4,5,3,2,3,4,5,2,3,2,3,4,5,6,4], chunksize=1)
pool.close()
while True:
if not jobs.ready():
print("We're not done yet, %s tasks to go!" % <somethingtogettasks>)
jobs.wait(2)
else:
break