提问人:Bob 提问时间:11/7/2023 最后编辑:Bob 更新时间:11/7/2023 访问量:14
带有 pickle 错误的 Python joblib:Can't pickle <class '__main__。Foo'>:它没有被发现为__main__。傅
Python joblib with pickle error: Can't pickle <class '__main__.Foo'>: it's not found as __main__.Foo
问:
我有一些代码,其中函数返回一个类,我想将其保存到文件中。这个功能需要相当长的时间,所以我想用 joblib 来加速它。但是,我现在收到以下错误:Foo
_pickle.PicklingError: Can't pickle <class '__main__.Foo'>: it's not found as __main__.Foo
我也无法让它在一些简单的代码上工作:
import joblib
from joblib import Parallel, delayed
import pickle
class Foo:
def __init__(self, x):
self.x = x
def Fooify(x):
return Foo(x + 1)
def saveIt(x):
xFoo = Fooify(x)
with open(f"test{x}.pkl", "wb") as file:
joblib.dump(xFoo, file)
Parallel(n_jobs=2)(
delayed(saveIt)(x) for x in range(10)
)
我都试过了 和 ,但都给出了相同的错误。将 joblib 后端更改为“threading”确实有效,但不幸的是,由于 GIL,这并没有加快我的程序速度。如何修复此错误?pickle.dump
joblib.dump
编辑: 我在这里找到了一种解决方法,即在自己的文件中声明类,然后导入它。这可行,但我想将所有内容都放在 jupyter 笔记本中。有没有其他方法可以解决这个问题?
答: 暂无答案
评论