在Python中优雅地捕获Ctrl+C / SIGINT并退出多进程

11 浏览
0 Comments

在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()

这个方法有点起作用,但我觉得不是正确的解决方案。

0