我有一个产生多个进程的程序,然后用Ctrl + C将其杀死。
在程序开始时,我捕获了信号以便执行一些清理操作。
def cleanup(*_):
# do cleanup operations here
# ...
exit(1)
# trap ctrl+c and hide the traceback message
signal(SIGINT, cleanup)
# spawn processes (pool of workers) and do work here
# ...
问题是cleanup
被多次调用(每个运行的进程一次)。
如何做到cleanup
仅被调用一次?
答案 0 :(得分:1)
您的子进程正在从其父进程继承信号处理程序。如果您希望处理程序仅在一个进程中执行,则可能要在子进程中注销该处理程序。