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

Python多进程在Visual Studio Code中运行报错的解决咨询

Python多进程RuntimeError问题解决(Windows环境)

结论先行:你完全猜对了——必须把进程创建、启动、等待的所有代码都放进if __name__ == '__main__'代码块里,这是Windows平台下Python多进程的硬性要求,也是你报错的核心原因。

问题根源

Windows系统不支持类Unix的fork机制,Python创建子进程时会采用spawn模式:子进程会重新导入你的主模块。如果把p1.start()这类代码放在全局作用域,子进程导入模块时会再次执行这些代码,导致无限递归创建子进程,直接触发RuntimeError。

你的原代码里虽然加了multiprocessing.freeze_support(),但只把这一行放进了主代码块,进程创建、启动、等待的逻辑都在全局作用域,这就踩了Windows多进程的典型坑。

修正后的代码

import multiprocessing
import time

def sleepy_man():
    print('开始休眠')
    time.sleep(1)
    print('休眠结束')

if __name__ == '__main__':
    # freeze_support()仅在将脚本打包成exe时需要,直接运行py脚本可省略
    # multiprocessing.freeze_support()
    
    tic = time.time()
    p1 = multiprocessing.Process(target=sleepy_man)
    p2 = multiprocessing.Process(target=sleepy_man)
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    toc = time.time()
    print('总耗时:{:.4f}秒'.format(toc-tic))

补充说明

  • 报错信息里已经明确提示了正确写法:将多进程相关逻辑放入if __name__ == '__main__'代码块
  • 如果你不需要把脚本打包成可执行文件,multiprocessing.freeze_support()这一行可以直接删除

内容的提问来源于stack exchange,提问作者Sebastian Nevarez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:14:55