2015-07-05 15 views

Trả lời

4

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) 
+0

Vâng, tôi nghĩ đây là sim đủ ple. – iuradz

Các vấn đề liên quan