0

我使用多处理池在不同进程之间划分任务。我注意到一个奇怪的行为,即只有一半的预期工作人员在调用 map_async 后开始工作。

也就是说,当我打电话时

pool = Pool(12, init_func, (pram1, param2, param3))
pool.map_async(main_process_func, list_of_items, chunksize=1)

我看到实际上有 6 个工作人员开始执行 main_process_func!

但是当我添加参数 maxtasksperchild=1 时,即:

pool = Pool(12, init_func, (pram1, param2, param3), maxtasksperchild=1)
pool.map_async(main_process_func, list_of_items, chunksize=1)

然后我看到有 12 个 worker 开始执行 main_process_func!

根据我的理解, maxtasksperchild 应该与此行为无关。你认为为什么会这样?为什么首先只有一半的工人开始跑步?

Python 版本:3.6.9 操作系统:Ubuntu 18.04.4

4

0 回答 0