joblib.Parallel running through spyder hanging on Windows(Joblib.在Windows上挂起的Spyder中并行运行)
问题描述
我工作时在Windows Server 2013上运行的是Python3.5.1。我有一些令人尴尬的并行任务,它们似乎可以用基本相同的代码在Python2.7上运行,但我不知道如何让它在Python3.5.1上运行。
我使用的是蟒蛇2.4.1
代码如下...我已经把它减到了最低限度。
->main.py
apackage
->__init__.py
->amodule.py
main.py
from tpackage import AClass
def go():
x = AClass().AFunction()
return x
if __name__ == '__main__':
x = go()
print(x)
__init__.py
from .amodule import AClass
__all__ = ['AClass']
amodule.py
的代码
from joblib import Parallel, delayed
class AClass(object):
def AFunction(self):
x = Parallel(n_jobs=2,verbose=100)(
delayed(add1)(i) for i in range(10)
)
return x
def add1(x):
return x + 1
这是否与if __name__ == '__main__':
语句的需要有关?我认为我不需要它,因为Parallel
已经在def
语句中受到保护,应该只在调用__main__
模块时运行,而这应该只发生一次。
amodule.py
中更改n_jobs=1
,一切都会正常工作。
更新:
因此,经过进一步审查,似乎这可能与Spyder有关。我使用的是Spyder 2.3.8。当我让Spyder执行这是一个专用窗口时,它可以工作。但当它在交互式IPython控制台中运行时,它会失败。我也可以直接从命令行运行程序,没有问题。
更新2:
进一步查看后,这确实与IPython位于与*.py文件不同的工作目录有关。把它们排好,这就管用了。
推荐答案
(Spyder dev此处)如果此问题是由runfile
设置工作目录引起的,您可以转到菜单项
Run > Configuration per file
(或按Ctrl+F6
)并选择名为当前工作目录的选项。
备注:
- 为每个文件保存运行配置,Spyder在重新启动后会记住它。
- Spyder3.2及更高版本的答案已更新。
这篇关于Joblib.在Windows上挂起的Spyder中并行运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Joblib.在Windows上挂起的Spyder中并行运行
基础教程推荐
- Python 的 List 是如何实现的? 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01