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

Python Multiprocessing导入疑问:为何需同时导入模块与成员?

问题原因及解决办法

核心原因

  • 只用import multiprocessing时,代码里直接写Pool会报错,是因为Pool这个名字没被导入到当前代码的命名空间里——得像调用multiprocessing.Event、multiprocessing.cpu_count()那样,写成multiprocessing.Pool才能用。
  • 只用from multiprocessing import Event, Lock, Pool时,multiprocessing这个模块名本身没被引入当前命名空间,所以调用multiprocessing.cpu_count()时,Python找不到multiprocessing这个名字,就会报NameError。

更合理的写法(无需同时用两种导入)

有两种规范的解决方式:

方式一:全程通过模块名调用

保持import multiprocessing,把代码里的Pool改成multiprocessing.Pool即可:

import multiprocessing

print('cpu count=', multiprocessing.cpu_count())

event = multiprocessing.Event() # Assign an event object
lock = multiprocessing.Lock()

with multiprocessing.Pool(processes=2) as pool:
    for serverNum in range(2):
        pool.apply_async(funcCall, (event, lock, serverNum))

方式二:按需导入所有用到的成员

把cpu_count也加入导入列表,这样就不用再写模块名:

from multiprocessing import Event, Lock, Pool, cpu_count

print('cpu count=', cpu_count())

event = Event() # Assign an event object
lock = Lock()

with Pool(processes=2) as pool:
    for serverNum in range(2):
        pool.apply_async(funcCall, (event, lock, serverNum))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:59:53