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

Python多进程运行时报错:未用fork及未遵循主模块规范如何解决?

解决Python多进程运行时错误

错误原因

在Windows系统中,Python多进程采用spawn方式启动子进程,而非Unix/Linux的fork机制。这种方式下,每个子进程都会重新导入主模块,如果没有用if __name__ == '__main__':包裹主程序逻辑,子进程会重复执行创建进程的代码,引发循环启动进程的错误,也就是你看到的提示信息。

修正后的代码

from multiprocessing import Process
import os

def square_num():
    for i in range(100):
        result = i * i  # 可根据需求添加实际操作,比如打印或存储计算结果
        # print(f"进程 {os.getpid()}: {i} 的平方是 {result}")

if __name__ == '__main__':
    processes = []
    num_processes = os.cpu_count()

    for _ in range(num_processes):
        p = Process(target=square_num)   
        processes.append(p)

    for p in processes:
        p.start()

    for p in processes:
        p.join()

    print('end main')

关键说明

  • 所有启动、管理进程的代码必须放在if __name__ == '__main__':代码块内,这样子进程导入模块时会跳过这部分逻辑,只执行目标函数square_num。
  • 无需添加freeze_support(),因为你没有把程序打包成可执行文件。
  • 建议将模块导入语句放在代码顶部,避免子进程重复导入时出现不必要的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:42:39