You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多进程Event无法正常工作问题求助

解决multiprocessing Event无法正常工作的问题

看起来你写的这个测试脚本核心问题出在全局Event的使用方式上,尤其是在Windows系统下(Windows默认用spawn方式启动子进程)。

问题根源

在Windows中,multiprocessing的spawn模式会重新导入主模块,这意味着每个子进程都会重新创建一个独立的Event实例——也就是说,p1等待的Event和p2设置的Event根本不是同一个对象,自然没法实现进程间的同步。哪怕是在Linux/macOS的fork模式下,全局变量的写法也不够规范,跨平台兼容性差。

修复后的代码

把Event作为参数传递给子进程,让两个进程共享同一个Event对象,同时加上join()确保主进程等待子进程执行完毕:

import multiprocessing, time
from multiprocessing import Process, Event

def f(n, event):
    if n == 1:
        print("starting")
        event.wait()
        print("Done!")
    if n == 2:
        time.sleep(3)
        event.set()
        print("setting")

if __name__ == "__main__":
    event = Event()  # 放在main代码块内,避免子进程重复初始化
    p1 = Process(target=f, args=(1, event))
    p2 = Process(target=f, args=(2, event))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

额外提示

  • join()方法能保证主进程不会提前退出,确保子进程有足够时间完成任务;
  • 传递参数的写法是跨平台的,不管在Windows还是Linux/macOS下都能稳定运行。

内容的提问来源于stack exchange,提问作者Anish Shanbhag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:44:28