我试图运行一个python脚本,该脚本经过修改以在多个内核中执行操作。我尝试使用nohup运行相同的操作,它工作正常,但当我尝试在更大的样本上运行它时,我得到以下错误。 mpiexec注意到在节点ip-xx-x-xxx上的PID 70581的进程等级6在信号1(Hangup)上退出。 任何关于它为什么发生以及如何纠正它的想法。如果有人可以建议在多个核心中运行python脚本的更好方法,那就太棒了。
例如我有一个脚本abc.py
a=[1,2,3,4]
result=[]
def foo(x,y):
#do some maths
score_pair=#some more maths depending on x and y
return score_pair
if __name__=='__main__':
for x in a:
for y in a:
score_pair=foo(x,y)
result.append([x,y,score_pair])
#save result in pickle
我使用mpi4py修改了for循环,以便脚本可以利用计算机上可用的多个核心。我正在使用
运行python脚本 nohup mpiexec -n 16 python abc.py > nohupfile.out &
只要a的大小很小(即执行时间很短),代码就可以正常工作。如果我增加a的大小,则进程挂断会产生上述错误。 知道怎么纠正这个吗?如果有其他方法可以并行化脚本吗?