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