【发布时间】:2022-01-23 13:57:20
【问题描述】:
这个问题已经被问过很多次了,但我找不到与我的具体设置相匹配的答案。
我有一个使用多处理的脚本。这是一个非常简化的示例:
from multiprocessing import Pool
def my_function(arg1,arg2):
print(arg1,arg2)
with Pool(processes=5) as pool:
pool.starmap(function, [(arg1,arg2),(arg1,arg2)])
pool.join()
print("should only run once all processes are finished")
我希望此时关闭池并继续正常的单一处理功能。我认为上下文管理器将处理池的关闭,并且 .join() 将确保它仅在所有进程完成后才关闭。但我看到的行为表明程序在所有进程完成之前运行超出了上下文管理器。我现在还需要做些什么吗?
此外,在这种情况下,分配了 5 个进程,但只有 2 个 args 元组传递给函数。在这种情况下,剩余的 3 个进程做了什么?
Python -V 3.9
【问题讨论】:
标签: python-3.x multiprocessing