multiprocessing モジュールを使用して、他の 5 つの Python プロセスを生成する Python プロセスがあります。親プロセスを P0 と呼び、その他を P1 ~ P5 と呼びましょう。要件は、SIGTERM を P0 に送信する場合、最初に P1 から P5 をシャットダウンしてから終了することです。
問題は、P1 と P5 がセマフォで待機していることです。したがって、これらのプロセスに SIGTERM を送信すると、プロセスはシグナル ハンドラを呼び出して終了します。しかし、セマフォで待機しているため、例外がスローされます。P0 から P5 が正常に終了できるように、終了前にその例外をキャッチする方法はありますか?
トレースバック:
Traceback (most recent call last):
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
Traceback (most recent call last):
Process Process-2:
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
Traceback (most recent call last):
self.run()
File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
Process Process-5:
Traceback (most recent call last):
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/opt/fireeye/scripts/mip/StaticAnalysisRunner.py", line 45, in run
qsem.acquire()