我遇到了一个问题,当使用 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/