我在使用Multiprocessing软件包(在Amazon EC2上的Ubuntu 12.04上使用numpy 1.7.0的python 2.73)并行执行一些简单的基于numpy的矩阵代数计算时遇到系统错误(如下所示).我的代码适用于较小的矩阵大小但崩溃较大的(具有足够的可用内存)
我使用的矩阵的大小是很大的(我的代码运行良好的1000000x10浮点密集矩阵,但崩溃1000000x500 - 我顺便通过子进程传递这些矩阵).10 vs 500是运行时参数,其他所有内容保持不变(输入数据,其他运行时参数等)
我也尝试使用python3运行相同的(移植的)代码 - 对于较大的矩阵,子进程进入睡眠/空闲模式(而不是像在python 2.7中那样崩溃),程序/子进程只是挂在那里什么都不做.对于较小的矩阵,代码可以使用python3运行良好.
任何建议都将受到高度赞赏(我这里的想法已经不多了)
错误信息:
Exception in thread Thread-5: Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run() File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 319, in _handle_tasks
put(task) SystemError: NULL result without error in PyObject_Call
Run Code Online (Sandbox Code Playgroud)
我使用的多处理代码:
def runProcessesInParallelAndReturn(proc, listOfInputs, nParallelProcesses):
if len(listOfInputs) == 0:
return
# Add result queue to the list of argument tuples.
resultQueue = mp.Manager().Queue()
listOfInputsNew = [(argumentTuple, …Run Code Online (Sandbox Code Playgroud)