使用mpirun
时,是否可以在正在运行的代码中捕获信号(例如,由^C
生成的SIGINT)?MPI信号处理
例如,我正在运行一个并行化的Python代码。我可以用except KeyboardInterrupt
自己运行python blah.py
来捕捉这些错误,但我不能在做mpirun -np 1 python blah.py
时。
有没有人有建议?即使找到如何在C或C++编译的程序中捕捉信号也是一个有益的开始。
如果我向派生的Python进程发送信号,他们可以正确处理信号;然而,发送到父节点的信号(即,超过群集上的挂机时间,或者在终端中按下control-C)将立即终止一切。
谢谢,但不幸的是,这并没有真正回答我的问题。我不想知道如何截取Python中的信号;我想知道如何防止`mpirun`首先捕获它们,或者如何从runner中传递它们(`orted`或`ortedrun`)。当执行`mpirun -np 1 python test.py`时,当我点击control-C或当我发送ortedrun信号时它仍然会死掉。 (如果我确实发现了ortrun生成并发出信号的Python解释器的pid,这可行;但这不是我想要的。) – 2009-07-18 04:23:29