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

Python使用multiprocessing调用目标函数报AttributeError如何解决

报错产生原因
  • Windows系统下Python的multiprocessing模块默认使用spawn方式创建子进程,该模式下子进程会重新导入当前主模块执行代码。如果创建进程的代码没有加if __name__ == '__main__'保护,子进程导入模块时会重复执行创建进程的逻辑,且会出现函数属性读取失败的问题。
  • 若你在交互式运行环境(如Jupyter Notebook、IDLE交互模式、Python命令行解释器)中直接运行该代码,内置的__main__模块的属性无法被子进程正常获取,也会触发该报错。
修复方案
  • 给所有启动子进程的逻辑添加if __name__ == '__main__'包裹,确保只有主进程执行启动逻辑,子进程导入时不会重复执行
  • 不要在交互式环境中直接运行多进程代码,将代码保存为独立的.py文件后,通过Python命令行执行该文件。
修复后可运行代码
import multiprocessing
import time

def run():
    print('sleeping for 1 second')
    time.sleep(1)
    print('done sleeping')

if __name__ == '__main__':
    start = time.perf_counter()
    p1 = multiprocessing.Process(target=run)
    p2 = multiprocessing.Process(target=run)

    p1.start()
    p2.start()
    p1.join()
    p2.join()

    finish = time.perf_counter()
    print(f'Finished in {round(finish-start, 2)} second(s)')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:00