参考:https://www.cnblogs.com/MoKinLi/p/17931515.html
matlab
import multiprocessing
import time
def 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() 是怎么被子进程识别的