gpt4 book ai didi

python - joblib.Parallel 通过卡在 Windows 上的 spyder 运行

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:01 25 4
gpt4 key购买 nike

我在工作时在 Windows Server 2013 上运行 Python 3.5.1。我有一些令人尴尬的并行任务,它们似乎可以在 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 执行时,这是一个专用窗口,它可以工作。但是当它在交互式 IPython 控制台中运行时,它失败了。我也可以直接从命令行运行程序,没有问题。

更新 2:

经过进一步审查,这确实与 IPython 与 *.py 文件位于不同的工作目录有关。把那些排好,这行得通。

最佳答案

(Spyder dev here)如果此问题是由 runfile 设置工作目录引起的,您可以通过转到菜单项来防止这种情况发生

Run > Configuration per file

(或按 Ctrl+F6)并选择名为当前工作目录的选项。

注释:

  1. 为每个文件保存运行配置,Spyder 会在重新启动后记住它。
  2. 答案已针对 Spyder 3.2 及更高版本更新。

关于python - joblib.Parallel 通过卡在 Windows 上的 spyder 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com