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

如何将Multiprocess Pool声明为变量并导入至其他Python文件(解决报错)

问题解决方法

错误原因

Python多进程执行任务时,会通过序列化传递任务函数的模块路径。你的start函数定义在main.py中,执行python main.py时该文件的模块名为__main__,子进程启动后无法从自身的__main__模块找到这个函数,因此抛出AttributeError。

解决方案

要让子进程能找到任务函数,需将函数放到可被导入的独立模块中,而非__main__模块。以下是具体实现:

步骤1:创建任务模块

新建task_functions.py文件,把start函数移进去:

def start(x):
    print(x+1)

步骤2:修改main.py

从任务模块导入start函数,其余逻辑保持不变:

from multiprocess_pool import A
from task_functions import start

if __name__ == '__main__':
    with A as a:
        print(a.apply_async(start, args=(1,)).get())

步骤3:保持multiprocess_pool.py不变

from multiprocessing import Pool

A = Pool(5)

额外注意事项(针对Web服务场景)

  • Web服务中使用全局进程池时,要确保进程池的初始化时机正确,避免在服务启动前创建导致的资源问题。
  • 如果使用如Flask、Django这类Web框架,建议在服务启动完成后再初始化进程池,或者使用懒加载方式创建。

内容的提问来源于stack exchange,提问作者the monkey of BIT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:59:01