Python多处理共享阵列在Linux内存问题上

时间:2017-02-09 19:33:38

标签: python arrays multiprocessing shared

我的问题是我无法在Linux下分配超过1.2亿的长共享阵列。在Windows下我没有这个问题。

这是我的示例代码。在Linux和Windows下,此代码中的所有内容都能正常工作。

import numpy as np
from multiprocessing import Array

i1     = Array('d', np.ones(40000000))
print('1')

i2     = Array('d', np.ones(40000000))
print('2')

i3     = Array('d', np.ones(40000000))
print('3')

result =  np.frombuffer(i1.get_obj())  + np.frombuffer(i2.get_obj())  + \
          + np.frombuffer(i3.get_obj())

np.save('result', result)
print('end')

下一个代码示例,我分配了40M的双倍更多,在Windows上运行得很好,但在Linux下不适用于我。我在计算机中心运行它,所以它不能由内存不足引起。

import numpy as np
from multiprocessing import Array

i1     = Array('d', np.ones(40000000))
print('1')

i2     = Array('d', np.ones(40000000))
print('2')

i3     = Array('d', np.ones(40000000))
print('3')

i4     = Array('d', np.ones(40000000))
print('4')

result =  np.frombuffer(i1.get_obj())  + np.frombuffer(i2.get_obj())  + \
          + np.frombuffer(i3.get_obj()) + np.frombuffer(i4.get_obj()) 

np.save('result', result)
print('end')

问题是,有人知道问题在哪里吗?它怎么解决?

0 个答案:

没有答案