使用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