Python:如何检查 multiprocessing.Pool 中待处理任务的数量?

2024-01-09

我有一小部分工作人员 (4) 和一个非常大的任务列表 (5000~)。我正在使用一个池并使用 map_async() 发送任务。因为我正在运行的任务相当长,所以我强制将块大小设置为 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

好像jobs._number_left就是你想要的。_表明它是一个内部值,可能会根据开发人员的心血来潮而改变,但这似乎是获取该信息的唯一方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何检查 multiprocessing.Pool 中待处理任务的数量? 的相关文章

随机推荐