Tôi có hàm python có kết quả xác định. Phải mất một thời gian dài để chạy và tạo ra một sản lượng lớn:Hashing chức năng trăn để tạo lại đầu ra khi chức năng được sửa đổi
def time_consuming_function():
# lots_of_computing_time to come up with the_result
return the_result
tôi sửa đổi time_consuming_function
bất cứ lúc nào, nhưng tôi muốn để tránh việc nó chạy lại trong khi nó không thay đổi. [time_consuming_function
chỉ phụ thuộc vào các chức năng không thay đổi được cho các mục đích được xem xét ở đây; nghĩa là nó có thể có chức năng từ thư viện Python nhưng không phải từ các phần khác của mã tôi muốn thay đổi.] Giải pháp gợi ý cho tôi là lưu vào bộ nhớ cache đầu ra và cũng lưu một số "hàm băm" của hàm. Nếu hàm băm thay đổi, hàm sẽ được sửa đổi và chúng ta phải tạo lại đầu ra.
Điều này có thể hay vô lý?
Cập nhật: dựa trên các câu trả lời, nó trông giống như những gì tôi muốn làm là để "memoize" time_consuming_function
, ngoại trừ thay vì (hoặc bổ sung cho) đối số được truyền vào một chức năng bất biến, tôi muốn tài khoản cho một hàm mà chính nó sẽ thay đổi.
+1 cho vấn đề thú vị. – zdav
Làm cách nào để bạn sửa đổi phương thức? Bạn có muốn giữ băm trên chạy chương trình hoặc là nó trong vòng một chạy nhưng trên một số tải lại mô-đun? – doublep
Tôi sẽ có phương thức trong tệp tập lệnh; Tôi có lẽ sẽ sửa đổi nó bằng tay theo thời gian. Ứng dụng là chức năng này sẽ tạo ra "dữ liệu vấn đề" để chạy trong một số mã mô phỏng. Tôi sẽ thay đổi vấn đề theo thời gian. –