python - ImportError: cannot import name Pool
python - ImportError: cannot import name Pool
代码在这里:
from multiprocessing import pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
抱歉,我是 python 的新手。每当我尝试导入池时,我都会收到以下错误。它说 os.chdir(wdir) 有问题,但我不知道是什么。有帮助吗?
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\z080302\Desktop\WinPython-32bit-2.7.6.3\python-2.7.6\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "C:/Users/z080302/Desktop/Python_Projects/mp_test.py", line 18, in <module>
p = multiprocessing.Process(target=worker, args=(i,))
NameError: name 'multiprocessing' is not defined
这是您的代码:
from multiprocessing import pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
您必须导入模块 multiprocessing 才能使用 multiprocessing.Process,您只从 multiprocessing 导入了 function/class 池,所以一个简单的修复是:
import multiprocessing
pool = multiprocessing.pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
您仅从 multiprocessing
模块导入 pool
模块。
所以你的口译员只知道 pool
而不知道 multiprocessing
要解决此问题,您必须导入 multiprocessing
,当您在代码中需要 pool
时,您可以像 multiprocessing.pool
一样使用它
multiprocessing
|-- __init__.py
|--Process
|--Pool
|--This_also
如上所示,您只导入 pool
而 python 不知道这个 multiprocessing 和 Process 以及 This_also 到底是谁。
通常我们在 python 包中有 __init __.py 文件。此文件中的列表 all = ['pool.py','Process.py',.......'This_also']
包含包中包含的所有模块。所以 import * 将导入所有模块。请通过 https://docs.python.org/2/tutorial/modules.html#
如果您编写了一个名为 multiprocessing.py 的文件,它将首先尝试导入该文件,这意味着当您执行 "from multiprocessing import Pool".
时它不会在其中找到池
multiprocessing 是包含在 Python 中的一个模块,里面有 Pool,所以如果没有冲突,下面的应该可以工作:
"from multiprocessing import Pool"
你调用脚本了吗'multiprocessing.py'?首先检查您的目录或文件...如果是 -> Python 将在您的脚本中查找池,它可能不存在。(如果存在则重命名)听起来很有趣但确实发生了)
代码在这里:
from multiprocessing import pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
抱歉,我是 python 的新手。每当我尝试导入池时,我都会收到以下错误。它说 os.chdir(wdir) 有问题,但我不知道是什么。有帮助吗?
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\z080302\Desktop\WinPython-32bit-2.7.6.3\python-2.7.6\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "C:/Users/z080302/Desktop/Python_Projects/mp_test.py", line 18, in <module>
p = multiprocessing.Process(target=worker, args=(i,))
NameError: name 'multiprocessing' is not defined
这是您的代码:
from multiprocessing import pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
您必须导入模块 multiprocessing 才能使用 multiprocessing.Process,您只从 multiprocessing 导入了 function/class 池,所以一个简单的修复是:
import multiprocessing
pool = multiprocessing.pool
def worker(num):
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
您仅从 multiprocessing
模块导入 pool
模块。
所以你的口译员只知道 pool
而不知道 multiprocessing
要解决此问题,您必须导入 multiprocessing
,当您在代码中需要 pool
时,您可以像 multiprocessing.pool
multiprocessing
|-- __init__.py
|--Process
|--Pool
|--This_also
如上所示,您只导入 pool
而 python 不知道这个 multiprocessing 和 Process 以及 This_also 到底是谁。
通常我们在 python 包中有 __init __.py 文件。此文件中的列表 all = ['pool.py','Process.py',.......'This_also']
包含包中包含的所有模块。所以 import * 将导入所有模块。请通过 https://docs.python.org/2/tutorial/modules.html#
如果您编写了一个名为 multiprocessing.py 的文件,它将首先尝试导入该文件,这意味着当您执行 "from multiprocessing import Pool".
时它不会在其中找到池multiprocessing 是包含在 Python 中的一个模块,里面有 Pool,所以如果没有冲突,下面的应该可以工作: "from multiprocessing import Pool"
你调用脚本了吗'multiprocessing.py'?首先检查您的目录或文件...如果是 -> Python 将在您的脚本中查找池,它可能不存在。(如果存在则重命名)听起来很有趣但确实发生了)