问题描述
当从 lru_cached 函数返回可变对象(例如 numpy.ndarray
)时,对返回对象的任何更改 - 都会影响缓存对象。
这通常是有道理的,但也可能令人困惑。
看下面的例子
In [13]: from functools import lru_cache
...: import numpy as np
...:
...:
...: @lru_cache
...: def cached_function(param):
...: print(f"running cached_function on: {param}")
...: return np.array([param])
...:
...:
...: for number in [100,200,100]:
...: res = cached_function(number)
...: res *= 5
...: print(res)
...:
running cached_function on: 100
[500]
running cached_function on: 200
[1000]
[2500]
无论如何使用lru_cache
(或类似的)没有这种副作用?
是否应该避免从缓存函数返回可变对象?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)