use*_*060 17 python multiprocessing spyder python-multiprocessing
我正在使用Python 3.6,并且正在尝试跟随下面网站上的第一个示例(下面的完整代码)并且我得到以下错误:https: //docs.python.org/3.6/library/multiprocessing. HTML
错误信息:
AttributeError: module '__main__' has no attribute '__spec__'
完整示例代码:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)
我尝试使用Google搜索并搜索Stack Overflow,但我只发现了另一个此错误的情况并且没有答案.
use*_*060 26
问题不在于代码/ Python 3.6,而在于Spyder.
经过一些调查后,我发现代码在外部系统终端中执行时运行正常,但在Spyder的IPython控制台中运行时却没有.
我能够转储spec的内容并将它们分配给main中包含的变量,以允许此代码在IPython控制台中运行.
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)"
with Pool(5) as p:
print (p.map(f, [1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)
Joe*_*eyC 16
这个问题没有特别提到 Spyder 和 Conda(尽管它被标记为这样)。因此,我会注意到我发现在使用 pdb 时也会发生这种情况。
例如
python -m pdb myprogram.py
__spec__ = None如果您想坚持使用 pdb,传递将是一个有用的解决方法。
| 归档时间: |
|
| 查看次数: |
13251 次 |
| 最近记录: |