Có thể cách đơn giản nhất để làm như vậy là ghi nhớ phiên bản chỉ lấy các đối tượng không thay đổi.
Giả sử hàm của bạn mất np.array
và giả sử đó là mảng 1d. May mắn thay, nó có thể dễ dàng dịch sang một tuple
:
import numpy as np
a = np.array([1, 2, 3, 4])
>> tuple(a)
(1, 2, 3, 4)
và ngược lại:
>> np.array(tuple(a))
array([1, 2, 3, 4])
Vì vậy, bạn sẽ có được một cái gì đó giống như
# Function called by the rest of your program
array_foo(a) # `a` is an `np.array`
...
return tuple_foo(tuple(a))
sau đó memoize thay vì chức năng này:
# Internal implementation
@functools.lru_cache
tuple_foo(t) # `t` is a tuple
...
a = np.array(t)
Nguồn
2015-07-06 00:20:38
Vâng, tôi nghĩ đây là sim đủ ple. – iuradz