我有一个 Python 进程,它使用多处理模块生成 5 个其他 Python 进程。我们称父进程为 P0,其他进程为 P1-P5。要求是,如果我们向 P0 发送 SIGTERM,它应该先关闭 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()