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

相关推荐
m0_372257022 分钟前
parse_model 函数的收尾部分,负责将计算好的参数实例化为真实的 PyTorch 层,并完成元数据的绑定和通道账本的更新
人工智能·pytorch·python
Ares-Wang4 分钟前
AI》》人工智能》》AIGC》》deepseek常见用法 PPT、思维导图等
人工智能·python
criket4 分钟前
面向对象的层次聚类算法
python
m0_631529825 分钟前
如何创建物化视图日志_CREATE MATERIALIZED VIEW LOG记录基表DML变更
jvm·数据库·python
m0_702036539 分钟前
Layui表格渲染如何处理字段名为JSON关键字(如order)的情况
jvm·数据库·python
m0_5913647314 分钟前
mysql连接查询中包含大表如何优化_采用嵌套循环JOIN优化顺序
jvm·数据库·python
风落无尘18 分钟前
《智能重生:从垃圾堆到AI工程师》——第九章 语言与理解
人工智能·python·卷积神经网络
2401_8844541519 分钟前
golang如何给图片添加水印_golang图片添加水印解析
jvm·数据库·python
hongjianMa22 分钟前
【论文阅读】Structured Spectral Reasoning for Frequency-Adaptive Multimodal Recommendation
论文阅读·python·深度学习·推荐系统·多模态推荐
kexnjdcncnxjs30 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python