При использовании mpirun
возможно ли перехватывать сигналы (например, SIGINT, сгенерированный ^C
) в выполняемом коде?
Например, я запускаю параллельный код Python. Я могу except KeyboardInterrupt
перехватить эти ошибки при запуске python blah.py
, но не могу при mpirun -np 1 python blah.py
.
У кого-нибудь есть предложения? Даже поиск того, как отлавливать сигналы в скомпилированной программе на C или C ++, был бы полезным началом.
Если я отправлю сигнал порожденным процессам Python, они смогут правильно обработать сигналы; однако сигналы, отправленные в родительский процесс orterun
(т. е. из-за превышения времени ожидания в кластере или нажатия клавиши control-C в терминале), немедленно уничтожат все.