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

如何在Python函数内部正确启动并管理多进程?

正确实现方式

先明确你代码里的核心问题:

  • if __name__ == '__main__':不能放在函数内部,这个判断必须放在模块顶层,否则Windows系统下多进程启动时会触发重复导入逻辑,导致进程无法正常工作。
  • 函数定义存在语法错误,def my_funct要补全括号写成def my_funct():。
  • 需确保正确导入multiprocessing模块的Process类。

完整的可运行代码示例:

from multiprocessing import Process

def funct1():
    # 编写funct1的业务逻辑
    print("funct1 正在运行")

def funct2():
    # 编写funct2的业务逻辑
    print("funct2 正在运行")

def my_funct():
    # 执行函数前置逻辑
    print("my_funct 启动")

    # 创建进程实例
    p1 = Process(target=funct1)
    p2 = Process(target=funct2)

    # 启动进程
    p1.start()
    p2.start()

    # 这里编写你的后续业务代码
    # 如果需要等待进程自然结束,建议用join()替代terminate()(terminate是强制终止)
    # p1.join()
    # p2.join()

    # 强制终止进程(根据实际需求选择使用)
    p1.terminate()
    p2.terminate()

    # 执行函数后置逻辑
    print("my_funct 结束")
    return "处理结果"

# 模块顶层的主程序入口,必须放在这里
if __name__ == '__main__':
    result = my_funct()
    print(result)

关键注意事项:

  • if __name__ == '__main__':放在模块最外层,是为了避免子进程导入当前模块时重复执行主程序逻辑,防止出现无限创建进程的异常。
  • terminate()属于强制终止操作,若你的funct1和funct2是会自行结束的任务,优先使用join()等待进程自然完成,这样更安全稳定。
  • 确保funct1和funct2能被子进程正常访问,脚本直接运行时无需额外处理,若作为模块导入则要保证函数的可见性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:27:36