Cha*_*les 3 python python-3.x spyder joblib
我正在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
Run Code Online (Sandbox Code Playgroud)
代码 main.py
from tpackage import AClass
def go():
x = AClass().AFunction()
return x
if __name__ == '__main__':
x = go()
print(x)
Run Code Online (Sandbox Code Playgroud)
代码 __init__.py
from .amodule import AClass
__all__ = ['AClass']
Run Code Online (Sandbox Code Playgroud)
代码 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
Run Code Online (Sandbox Code Playgroud)
这与if __name__ == '__main__':声明的需要有关吗?我不认为我会需要这个,因为它Parallel已经在def语句中受到保护,并且只应在__main__调用模块时运行,这应该只发生一次.
我应该补充说,如果我换n_jobs=1了amodule.py,一切都很好.
更新:
因此,经过进一步审查,似乎这可能与spyder有关.我正在使用spyder 2.3.8.当我有spyder执行这是一个专用的窗口,它的工作原理.但是当它在交互式IPython控制台中运行时,它会失败.我也可以直接从命令行运行程序而不会出现问题.
更新2:
经过进一步审查,这确实与IPython在*.py文件之外的工作目录中有关.排队,这是有效的.
(Spyder dev here)如果这个问题是由runfile设置工作目录引起的,你可以通过转到菜单项来防止这种情况发生
Run > Configuration per file
Run Code Online (Sandbox Code Playgroud)
(或按Ctrl+F6)并选择名为The current working directory的选项.
备注:
| 归档时间: |
|
| 查看次数: |
3024 次 |
| 最近记录: |