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

Python运行multiprocessing多进程代码报bootstrapping phase错误如何解决

报错根本原因

Python的multiprocessing模块在Windows、macOS等系统上默认使用spawn模式启动子进程,该模式下子进程会重新导入整个主模块的所有顶层代码执行。你将multiprocessing.Manager()初始化、共享列表创建等逻辑放在了if __name__ == '__main__'守卫之外,子进程导入模块时会再次执行这些代码,而Manager本身也需要启动子进程,此时当前子进程还未完成启动初始化,就触发了该RuntimeError。

排查修复方案
  • 所有和多进程初始化相关的顶层代码,全部移动到if __name__ == '__main__'代码块内部,避免子进程导入时重复执行。
  • 建议将共享变量final_list作为参数传入工作函数,减少全局变量依赖,降低跨进程共享的异常概率。
  • 如果程序需要打包为可执行文件,在if __name__ == '__main__'的第一行添加multiprocessing.freeze_support()即可,普通脚本运行无需添加该行。

修复后的可运行代码如下:

import multiprocessing

def worker(data, final_list):
    for item in data:
        final_list.append(item)

if __name__ == '__main__':    
    manager = multiprocessing.Manager()
    final_list = manager.list()

    input_list_one = ['one', 'two', 'three', 'four', 'five']
    input_list_two = ['six', 'seven', 'eight', 'nine', 'ten']

    process1 = multiprocessing.Process(target=worker, args=(input_list_one, final_list))
    process2 = multiprocessing.Process(target=worker, args=(input_list_two, final_list))

    process1.start()
    process2.start()
    process1.join()
    process2.join()

    print(final_list)

内容的提问来源于stack exchange,提问作者Ehsan Akbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:45:03