【问题标题】:multiprocessing code gets stuck多处理代码卡住了
【发布时间】:2017-01-02 06:06:20
【问题描述】:

我在 Windows 7 上使用 python 2.7,目前正在尝试学习并行处理。

我下载了 multiprocessing 2.6.2.1 python 包并使用 pip 安装它。

当我尝试运行愚蠢的非常简单的代码时,程序似乎卡住了,即使一小时后它也没有退出执行,尽管代码非常简单。

我错过了什么?非常感谢

from multiprocessing import Pool

def f(x):
    return x*x

array =[1,2,3,4,5]

p=Pool()
result = p.map(f, array)
p.close()
p.join()
print result

【问题讨论】:

  • python 2.7内置多处理库,无需单独下载。

标签: python-multiprocessing


【解决方案1】:

这里的问题是多处理的工作方式。把它想象成 python 打开一个新实例并重新导入所有模块。您需要使用if __name__ == '__main__' 约定。以下工作正常:

import multiprocessing

def f(x):
    return x * x

def main():
    p = multiprocessing.Pool(multiprocessing.cpu_count())
    result = p.imap(f, xrange(1, 6))
    print list(result)

if __name__ == '__main__':
    main()

我也更改了代码的其他一些部分,因此您可以看到实现相同目的的其他方法,但最终您只需要在 python 重新导入您正在运行的代码时停止一遍又一遍地执行代码。

【讨论】:

    猜你喜欢
    • 2016-03-09
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多