말은 내가 lru_cache
를 사용하여 캐시 할이 방법이 숫자 2-9가이 시점에서 캐시됩니다.파이썬 lru_cache 사용 최적화
print([very_expensive_call(i) for i in range(10)]) # call_2
이 call_2 동안, 다시 첫 번째 숫자 0
은 (하지 캐시에!)라고하며, 그 숫자 뒤에 0과 3-9는 캐시 : call_1 후
, 나는 call_2를하고있는 중이 야. 그 다음 숫자 1
이 호출되고 (캐시에 없습니다!) 그 다음에 숫자 0-1과 4-9가 캐시됩니다. 이 어디로 글쎄, 당신이 볼 : 캐시가 사용되지 않습니다 ...
나는이 특정 예를 들어 내가 range(...
과 reverse(range(...
사이 그러나 아마 불가능 더 복잡한 시나리오에서 대체 할 수 있음을 이해합니다.
질문 질문 : 캐시 된 번호를 검사하고이를 기반으로 호출을 주문할 수 있습니까? 이것에 대한 오버 헤드는 무엇입니까?
답변 해 주셔서 감사합니다. 나는 그것이 lru_cache 철학에 위배된다고 생각한다. 제 생각에는 최적화 문제에 더 가깝습니다.이 문제에 관해서는 좀 더 다른 인수를 사용하여 반복적으로 메서드를 호출하면 maxsize가 발생하고 갑자기 캐시가 전혀 사용되지 않는다는 것을 알게되었습니다. 아마도 maxsize가 증가 할 것입니다. –