在Python中优雅地捕获Ctrl+C / SIGINT并退出多进程
- 论坛
- 在Python中优雅地捕获Ctrl+C / SIGINT并退出多进程
11 浏览
在Python中优雅地捕获Ctrl+C / SIGINT并退出多进程
如何在多进程的Python程序中捕捉Ctrl+C,并优雅地退出所有进程,我需要这个解决方案在Unix和Windows上都能工作。我尝试了以下方法:
import multiprocessing import time import signal import sys jobs = [] def worker(): signal.signal(signal.SIGINT, signal_handler) while(True): time.sleep(1.1234) print("Working...") def signal_handler(signal, frame): print('You pressed Ctrl+C!') # for p in jobs: # p.terminate() sys.exit(0) if __name__ == "__main__": for i in range(50): p = multiprocessing.Process(target=worker) jobs.append(p) p.start()
这个方法有点起作用,但我觉得不是正确的解决方案。