Tôi đang sử dụng mã xây dựng của Python 3 functools.lru_cache
để ghi nhớ một số chức năng đắt tiền. Tôi muốn ghi nhớ càng nhiều cuộc gọi càng tốt mà không cần sử dụng quá nhiều bộ nhớ, vì việc lưu vào bộ nhớ đệm quá nhiều giá trị gây ra sự lộn xộn.Bộ nhớ đệm LRU nhận biết bộ nhớ bằng Python?
Có kỹ thuật hoặc thư viện ưu tiên để hoàn thành điều này bằng Python không?
Ví dụ: this question dẫn tôi đến thư viện Go theo số system memory aware LRU caching. Một cái gì đó tương tự cho Python sẽ là lý tưởng.
Lưu ý: tôi có thể không chỉ là ước lượng bộ nhớ sử dụng cho mỗi giá trị và thiết lập maxsize
phù hợp, vì một số quy trình sẽ được gọi hàm được trang trí song song; một giải pháp sẽ cần phải thực sự tự động kiểm tra dung lượng bộ nhớ còn trống.
Nếu bạn không thể tìm thấy một cái gì đó ra khỏi đó mà thực hiện điều này đã có, bạn có thể thử tận dụng psutil (http://code.google.com/p/psutil/) để cuộn của bạn sở hữu. – dano
Vâng, đó là những gì tôi đang xem xét ngay bây giờ - trên thực tế, bạn có biết làm thế nào để tìm nguồn cho việc triển khai 'lru_cache' của Python 3? Cách dễ nhất là chỉ cần kiểm tra việc sử dụng bộ nhớ trong trang trí. Nó sẽ thêm một số chi phí cho chắc chắn, nhưng trong ứng dụng này tôi không nghĩ rằng nó sẽ là đáng kể. – Will
@Vẫn cho nguồn xem [functools.py:370](http://hg.python.org/cpython/file/5d0783376c88/Lib/functools.py#l370) và một vài dòng ở trên cho các chức năng của bộ nhớ cache. –