joblib.Parallel 运行 通过挂在 Windows 上的 spyder
joblib.Parallel running through spyder hanging on Windows
我正在 运行宁 Python 3.5.1 在 Windows Server 2013 上工作。我有一些令人尴尬的并行任务,它们似乎可以在 Python 2.7 上使用基本相同的代码运行,但我无法弄清楚如何在 Python 3.5.1 上将其运行到 运行。
我正在使用 Anaconda 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 执行时,这是一个专用的 window,它可以工作。但是当它 运行 在交互式 IPython 控制台中时,它失败了。我也可以 运行 直接从命令行运行程序,没有问题。
更新二:
经过进一步审查,这确实与 IPython 与 *.py 文件位于不同的工作目录有关。把那些排好,这行得通。
(Spyder dev here) 如果此问题是由 runfile
设置工作目录引起的,您可以通过转到菜单条目
Run > Configuration per file
(或按 Ctrl+F6
)并选择名为 当前工作目录.
的选项
备注:
- 运行配置为每个文件保存,Spyder 会在重新启动后记住它。
- Spyder 3.2 及更高版本的答案已更新。
我正在 运行宁 Python 3.5.1 在 Windows Server 2013 上工作。我有一些令人尴尬的并行任务,它们似乎可以在 Python 2.7 上使用基本相同的代码运行,但我无法弄清楚如何在 Python 3.5.1 上将其运行到 运行。
我正在使用 Anaconda 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 执行时,这是一个专用的 window,它可以工作。但是当它 运行 在交互式 IPython 控制台中时,它失败了。我也可以 运行 直接从命令行运行程序,没有问题。
更新二:
经过进一步审查,这确实与 IPython 与 *.py 文件位于不同的工作目录有关。把那些排好,这行得通。
(Spyder dev here) 如果此问题是由 runfile
设置工作目录引起的,您可以通过转到菜单条目
Run > Configuration per file
(或按 Ctrl+F6
)并选择名为 当前工作目录.
备注:
- 运行配置为每个文件保存,Spyder 会在重新启动后记住它。
- Spyder 3.2 及更高版本的答案已更新。