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

Python multiprocessing.Process不运行无输出怎么解决

问题原因
  • macOS 平台从 Python 3.8 版本开始,multiprocessing 模块的默认进程启动方式改为 spawn,该模式要求所有进程创建的顶层代码必须包裹在 if __name__ == '__main__' 判断中,否则子进程启动时会重复执行主模块的全部顶层代码,导致目标函数无法正常触发执行。
  • 终端标准输出默认存在缓冲,子进程的打印内容如果没有主动刷新,会滞留在缓冲区不会输出到终端界面。
修复后的可运行代码
import multiprocessing

def func(n):
    # 加flush=True强制刷新输出缓冲,确保内容即时打印
    print('Function', n, flush=True)

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=func, args=(1, ))
    p2 = multiprocessing.Process(target=func, args=(2, ))

    p1.start()
    p2.start()

    p1.join()
    p2.join()

    print("Finished")
可选补充方案

如果按照上述修改后仍存在无输出的情况,可以在if __name__ == '__main__'块的最开头手动指定进程启动方式为fork(该方式为Python 3.7及之前版本macOS平台的默认启动方式):

if __name__ == '__main__':
    multiprocessing.set_start_method('fork')
    # 后续进程创建逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:36:02