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

Python Multiprocessing函数未执行,无输出且耗时异常求助

问题:Multiprocessing子进程函数未执行,无预期输出

你复制视频中的multiprocessing代码后,子进程的do_something函数未执行,仅打印了最终耗时,核心原因是Windows系统下的multiprocessing机制要求必须用if __name__ == '__main__':包裹主程序逻辑。

原因解析

Windows没有Unix系统的fork机制,Python会通过重新导入整个脚本的方式创建子进程。如果没有if __name__ == '__main__':保护,子进程启动时会再次执行整个脚本的代码,包括创建新的子进程、调用start()和join(),最终导致逻辑混乱,子进程的目标函数无法正常执行。

修正后的代码

import time
import multiprocessing

def do_something():
    print('Sleeping 1 second....')
    time.sleep(1)
    print('Done Sleeping...')

if __name__ == '__main__':
    start = time.perf_counter()

    p1 = multiprocessing.Process(target=do_something)
    p2 = multiprocessing.Process(target=do_something)     

    p1.start()
    p2.start()

    p1.join()
    p2.join()

    finish = time.perf_counter()

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

验证效果

运行修正后的代码,会得到预期输出:

Sleeping 1 second....
Sleeping 1 second....
Done Sleeping...
Done Sleeping...
Finished in 1.01 second(s)

注意事项

  • 该问题仅在Windows系统下出现,Unix/Linux/macOS系统因为使用fork机制,不需要额外的if __name__ == '__main__':保护也能正常运行。
  • 所有启动子进程的逻辑都必须放在if __name__ == '__main__':代码块内,避免子进程重复执行主程序代码。

内容的提问来源于stack exchange,提问作者Poopin Mah Business

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:10:29