我的问题是我无法在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')
问题是,有人知道问题在哪里吗?它怎么解决?