参考:https://www.cnblogs.com/MoKinLi/p/17931515.html
import multiprocessing
import timedef worker(event, value):while True:# 检查事件是否被设置if event.is_set():# 事件被设置,中断程序break# 模拟工作time.sleep(1)print(f"Working: {value}")if __name__ == "__main__":# 创建事件event = multiprocessing.Event()# 创建子进程p = multiprocessing.Process(target=worker, args=(event, "test"))p.start()# 等待 5 秒time.sleep(5)# 设置事件event.set()# 等待子进程结束p.join()print("程序已中断")
multiprocessing.Process(target=worker, args=(event, “test”))
启动子进程;主进程time.sleep(5)运行,当主进程设置事件 event.set()后子进程被关闭
1)去掉 p.join() 可以让程序继续运行,但子进程可能不会立即终止。
原因:
p.join() 方法会阻塞主进程,直到子进程结束。
如果不调用 p.join(),主进程会继续运行,而子进程会在后台继续运行。
2)主进程设置event.set() 是怎么被子进程识别的