如何将新任务添加到multiprocessing在父进程中初始化的池中?以下不起作用:
from multiprocessing import Pool
def child_task(x):
# the child task spawns new tasks
results = p.map(grandchild_task, [x])
return results[0]
def grandchild_task(x):
return x
if __name__ == '__main__':
p = Pool(2)
print(p.map(child_task, [0]))
# Result: NameError: name 'p' is not defined
动机:我需要并行化一个由各种子任务组成的程序,这些子任务本身也有子任务(即孙任务)。仅并行化子任务或孙任务不会利用我所有的 CPU 内核。
在我的用例中,我有各种子任务(可能有 1-50 个),每个子任务有很多孙子任务(可能有 100-1000 个)。
替代方案:如果使用 Python 的多处理包无法做到这一点,我很乐意切换到另一个支持它的库。
鸿蒙传说
holdtom
梵蒂冈之花
相关分类