Python报错:module 'multiprocessing' has no attribute 'pool' 求解决方案
解决AttributeError: module 'multiprocessing' has no attribute 'pool'问题
这个错误的核心原因是multiprocessing.pool是Python的一个子模块,无法直接通过multiprocessing主模块直接访问它的内部属性。你可以通过以下两种方式解决:
方式一:直接使用multiprocessing.Pool
multiprocessing模块已经将Pool类直接导出到主模块命名空间,因此可以直接继承multiprocessing.Pool,无需通过子模块路径:
import multiprocessing class NoDaemonProcess(multiprocessing.Process): # make 'daemon' attribute always return False @property def daemon(self): return False @daemon.setter def daemon(self, val): pass class NoDaemonProcessPool(multiprocessing.Pool): def Process(self, *args, **kwds): proc = super(NoDaemonProcessPool, self).Process(*args, **kwds) proc.__class__ = NoDaemonProcess return proc
方式二:显式导入multiprocessing.pool子模块
如果必须通过子模块路径访问Pool,需要先显式导入multiprocessing.pool子模块,再使用它的Pool类:
import multiprocessing import multiprocessing.pool # 显式导入子模块 class NoDaemonProcess(multiprocessing.Process): # make 'daemon' attribute always return False @property def daemon(self): return False @daemon.setter def daemon(self, val): pass class NoDaemonProcessPool(multiprocessing.pool.Pool): def Process(self, *args, **kwds): proc = super(NoDaemonProcessPool, self).Process(*args, **kwds) proc.__class__ = NoDaemonProcess return proc
两种方式都能解决错误,推荐第一种,更简洁且符合Python的常规使用习惯。
内容的提问来源于stack exchange,提问作者Tianxiang Zhan
相关产品推荐
相关产品推荐

