问题描述
如何将新任务添加到在父进程中初始化的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的多处理程序包无法做到这一点,我很乐意切换到另一个支持此功能的库。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)