我有一个函数,其中一个参数是numpy.ndarray。它是可变的,因此无法被lru_cache缓存。
是否有现有的解决方案?
我有一个函数,其中一个参数是numpy.ndarray。它是可变的,因此无法被lru_cache缓存。
是否有现有的解决方案?
import numpy as np
a = np.array([1, 2, 3, 4])
>> tuple(a)
(1, 2, 3, 4)
反之亦然:
>> np.array(tuple(a))
array([1, 2, 3, 4])
所以你会得到类似这样的东西
# Function called by the rest of your program
array_foo(a) # `a` is an `np.array`
...
return tuple_foo(tuple(a))
那么请使用记忆化技术来替代这个函数:
# Internal implementation
@functools.lru_cache
tuple_foo(t) # `t` is a tuple
...
a = np.array(t)