Set*_*son 5 python signals mpi
使用时mpirun
,是否可以^C
在正在运行的代码中捕获信号(例如,由生成的SIGINT )?
例如,我正在运行并行化的python代码。except KeyboardInterrupt
当python blah.py
我自己运行时,我可以捕获那些错误,但是当我运行时,则无法捕获mpirun -np 1 python blah.py
。
有人有建议吗?甚至找到如何在C或C ++编译程序中捕获信号也将是一个有用的开始。
如果我向生成的Python进程发送信号,它们可以正确处理这些信号;但是,发送到父orterun
进程的信号(即,由于超过了群集上的墙时间,或在终端上按了Control-C)将立即杀死所有内容。
Tor*_*rek -2
信号模块支持使用以下命令设置信号处理程序signal.signal
:
将信号 signalnum 的处理程序设置为函数处理程序。handler 可以是一个带有两个参数的可调用 Python 对象(见下文),也可以是特殊值 signal.SIG_IGN 或 signal.SIG_DFL 之一。之前的信号处理程序将被返回...
import signal
def ignore(sig, stack):
print "I'm ignoring signal %d" % (sig, )
signal.signal(signal.SIGINT, ignore)
while True: pass
Run Code Online (Sandbox Code Playgroud)
如果您将 a 发送SIGINT
到运行此脚本的 Python 解释器(通过kill -INT <pid>
),它将打印一条消息并继续运行。
归档时间: |
|
查看次数: |
2172 次 |
最近记录: |