gpt4 book ai didi

python - 在对象上 pickle lru_cached 函数

转载 作者:行者123 更新时间:2023-12-03 10:08:28 24 4
gpt4 key购买 nike

作为并行化一些现有代码(使用多处理)的一部分,我遇到了类似于下面类的东西需要被 pickle 的情况。

从...开始:

import pickle
from functools import lru_cache

class Test:
def __init__(self):
self.func = lru_cache(maxsize=None)(self._inner_func)

def _inner_func(self, x):
# In reality this will be slow-running
return x

打电话
t = Test()
pickle.dumps(t)

返回
_pickle.PicklingError: Can't pickle <functools._lru_cache_wrapper object at 0x00000190454A7AC8>: it's not the same object as __main__.Test._inner_func

我真的不明白。顺便说一句,我还尝试了一个变体,其中 _inner_func 的名称也是 func ,但这并没有改变。

最佳答案

如评论中所述,pickle 模块在处理装饰器时存在问题。有关详细信息,请参阅此问题:Pickle and decorated classes (PicklingError: not the same object)

关于python - 在对象上 pickle lru_cached 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54363043/

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