我从一个父进程派生了8个子进程。这8个子进程每个都有几个线程。我使用signal.signal(signal.SIGINT, signal_hander)
在每个子进程中注册signal_hander
函数。但是当我按下ctrl+c
时,有时只有一些子进程接收到信号,而其他进程只是挂起。为什么?如何确保所有进程都能接收到信号
import signal
def signal_hander(signum, frame):'
# sometimes not all child processes can execute the following line when I presses ctrl+c from the terminal or use kill command to send SIGINT. How can it be?
print(f'receive signal: {signum}')
...
# within every child process I do the following:
...
signal.signal(signal.SIGINT, signal_handler)
...
这是一个运行进程池的示例,其中提交的每个任务都运行一个线程,该线程除了休眠外不执行任何操作5秒。一旦我确定设置了SIGINT处理程序,我就输入CTRL-C。一旦
sleep
完成,就会输出“接收信号”消息:下面是一个使用
Process
实例和多线程而不是进程池的示例:相关问题 更多 >
编程相关推荐