为什么我从上一个问题中拉出了我的代码多处理池映射?

时间:2019-07-03 23:28:37

标签: python parallel-processing multiprocessing pool

我以哨兵here为例。我以为我已经复制并粘贴了代码的主要部分,但是我的代码不会停止。

我尝试使用pool.map解决另一个问题后一直尝试执行此示例。我想知道代码或我的多处理程序包是否真的有问题...

以下是我从senderle的最高答案中提取的代码:

from itertools import product
import multiprocessing
def merge_names(a, b):
    return '{} & {}'.format(a, b)
names = ['Brown', 'Wilson', 'Bartlett', 'Rivera', 'Molloy', 'Opie']
with multiprocessing.Pool(processes=3) as pool:
    results = pool.starmap(merge_names, product(names, repeat=2))
print(results)

我原本希望有36个“合并”名称的列表,但是该过程一直在运行,没有结束。有帮助吗?

1 个答案:

答案 0 :(得分:0)

在阅读juanpa.arrivillaga's评论后,我查找了'jupyter笔记本计算机多处理不起作用'。首先link回答了我的问题。

  1. 必须添加 if __name__ == '__main__' : 到您的代码。

  2. 将该功能另存为py文件并导入。

    • 就我而言,我将merge_names保存为merge_names.py
    • 然后我的代码如下所示:

import multiprocessing from itertools import product import merge_names

if __name__ == '__main__': names = ['Brown', 'Wilson', 'Bartlett', 'Rivera', 'Molloy', 'Opie'] with multiprocessing.Pool(processes=3) as pool: results = pool.starmap(merge_names.merge_names, product(names, repeat=2)) print(results)

现在代码在Jupyter Notebook中运行。