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

相关推荐
财经资讯数据_灵砚智能8 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月20日
人工智能·python·信息可视化·自然语言处理·ai编程
m0_6403093012 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
qq_3721542316 分钟前
Redis如何在应用启动时预热缓存数据
jvm·数据库·python
解救女汉子22 分钟前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
keineahnung234534 分钟前
PyTorch 張量尺寸為 1 時,步長為何不具語意?
人工智能·pytorch·python·深度学习
m0_6784854536 分钟前
怎么导入只包含特定表的SQL文件_正则提取与分离导入
jvm·数据库·python
qq_432703661 小时前
MySQL中如何编写带有循环的函数_MySQL函数流程控制技巧
jvm·数据库·python
LiAo_1996_Y1 小时前
如何保证MongoDB文档的数据质量_JSON Schema验证规则配置
jvm·数据库·python
Yu_Lijing1 小时前
Python数据分析和数据处理库Pandas(DataFrame数据分析入门)
人工智能·python·数据分析·pandas
qq_372906931 小时前
Python最短路径怎么求_Dijkstra算法与优先队列结合
jvm·数据库·python