Python joblib错误:找不到使用joblib.Parallel调用的函数调用的内部函数

2024-06-07 19:06:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我们遇到了一个奇怪的错误,我们不能轻易复制。代码在Linux机器和Windows机器上成功运行;但是,它会在另一台Windows计算机上触发错误(使用与另一台Windows计算机相同的环境)

我们当前的代码库相当大,但我已经尝试将这种情况合成一些小代码片段来说明发生了什么;假设我们有3个文件:

myutils.py

import joblib
def pmap(f, x, n_jobs):
    return joblib.Parallel(n_jobs = n_jobs)(joblib.delayed(f)(i) for i in x)

mylib.py

from myutils import pmap

def innerF(x):
    return x
    
def f(x):
    return innerF(x)

def runMyFunctionInParallel(x):
    return pmap(f, x, n_jobs = -4)

main.py

from myutils import pmap
from mylib import runMyFunctionInParallel
runMyFunctionInParallel([1,2,3,4,5])

我们和你一起做这件事

ipython -i main.py

但是在这台特定的机器上,我们得到了错误:

Exception: name 'innerF' is not defined

是什么导致了这个错误?到目前为止,我们已经发现

from mylib import innerF

tomain.py阻止错误发生在发生错误的机器上

我们正在用joblib 1.0.1Python 3.8上运行这个

但是我们仍然不确定它发生的确切原因,并且担心如果发生这种情况,代码中可能会发生其他可怕的事情,因此我们想了解原因以及如何防止这种情况发生


Tags: 代码frompyimport机器returnwindowsdef

热门问题