multiprocessing Event实现中断进程或程序

参考: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() 是怎么被子进程识别的

相关推荐
circuitsosk16 小时前
NL2SQL在工业级场景下的精度优化:Schema Linking + 动态Few-shot实战
人工智能·python·sql·大模型·nl2sql
kobe_OKOK_1 天前
DRF接口幂等操作
python·django
廿士1 天前
python脚本使用相关
python
青 春 记 忆1 天前
零基础入门python19:Flask账本第一步——应用工厂、蓝图和健康检查
python·flask·后端开发
朦胧之1 天前
Python 后端核心知识
python
denggun123451 天前
yield
前端·数据库·python
zx_741484811 天前
【Python 入门】面向对象基础:类、对象、成员变量与构造方法
开发语言·python
招财小梗1 天前
沈阳商贸公司AI企业服务优势几何?
大数据·人工智能·python
ZISHU_9871 天前
用 TLabel 给 SynTouch BioTac 数据做语义标注:从原始信号到结构化标注
开发语言·人工智能·python·数据·机器人触觉
m0_617493941 天前
SSLError [ASN1: NOT_ENOUGH_DATA] 问题排查与解决指南
python·ssl