将任务添加到父级的多处理池

问题描述

如何将新任务添加到在父进程中初始化的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 (将#修改为@)