python - 使用 numpy 进行多处理使 Python 在 OSX 上意外退出

标签 python macos numpy multiprocessing

我遇到了一个问题,当使用 numpy 运行多处理时,Python 意外退出。我已经隔离了问题,所以我现在可以确认在运行下面所述的代码时多处理工作正常:

import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p

def test(args):
    x,i = args
    if i == 2:
        time.sleep(4)
    arr = np.dot(x.T,x)
    print i

if __name__ == '__main__':
    x = np.random.random(size=((2000,500)))
    evaluations = [(x,i) for i in range(5)]
    p = Pool()
    p.map_async(test,evaluations)
    p.close()
    p.join()

当我尝试评估下面的代码时出现问题。这使得 Python 意外退出:

import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p

def test(args):
    x,i = args
    if i == 2:
        time.sleep(4)
    arr = np.dot(x.T,x)
    print i

if __name__ == '__main__':
    x = np.random.random(size=((2000,500)))
    test((x,4)) # Added code
    evaluations = [(x,i) for i in range(5)]
    p = Pool()
    p.map_async(test,evaluations)
    p.close()
    p.join()

请帮助某人。我愿意接受所有建议。谢谢。注意:我试过两台不同的机器,出现同样的问题。

最佳答案

这是 MacOS X 上多处理和 numpy 的一个已知问题,有点重复:

segfault using numpy's lapack_lite with multiprocessing on osx, not linux

http://mail.scipy.org/pipermail/numpy-discussion/2012-August/063589.html

答案似乎是在链接 Numpy 时使用不同于 Apple 加速框架的不同 BLAS...不幸的是:(

关于python - 使用 numpy 进行多处理使 Python 在 OSX 上意外退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705200/

相关文章:

python - 如何在退出框架上获取MessageDialog?

python - 通过c++调用带有多个pyx文件的cython库

c - OSX 和共享内存需要 sudo

python - Django更改密码而无需再次登录

python - 如何在 pandas 中读取固定宽度格式的文本文件?

c++ - LLD - 未知参数 : -arch

java - 如何强制 Java 应用程序登录网络代理?

python - 如何使用纯 Numpy 函数在网格数组上绘制和填充多边形?

python - python 中 randint(2) < 1 的解释,我无法理解 < 1 的作用

python - Numpy 的 matrix_power 函数给出大指数的错误结果