2017-11-10 8 views
0

천천히 실행되는 python 프로그램이 있습니다. 내 프로세스의 캐시를 늘리기 위해 @lru_cache (maxsize = 2056) 데코레이터를 사용하여 캐시를 추가했지만 내 코드를 실행할 때 내 프로그램의 소비 메모리는 작업 관리자 (2GB가 아님)에서 260MB입니다. 높은 캐시를 허용하지 않는 Windows 10의 한계입니까? eclipse luna + pydev를 사용하여 코드를 실행합니다. 내 파이썬의 버전은 3.5입니다.lru_cache를 사용하여 Windows 10에서 파이썬 캐싱

+0

캐시가 260 만 필요한 경우 2056MB를 할당해야하는 이유는 무엇입니까? 캐시가 초과해서는 안되는 최대 크기입니다. –

+0

네, 아마도 그것이 이유입니다. 하지만이 코드는 다른 시스템에서 단 2 분 만에 실행되는 반면 내 코드의 속도는 증가하지 않습니다. – Atena

+0

관련없는 제안. maxsize = 2^x 여기서 x는 양의 정수임을 확인하십시오. maxsize가 2의 거듭 제곱 인 경우 lru_cache가 훨씬 더 잘 작동합니다 (그러나 정확한 이유는 확실하지 않습니다). – Frogboxe

답변

0

Windows 10의 제한 사항이 될 수 없습니다. @lru_cache의 maxsize 매개 변수는 캐싱중인 내용에 따라 메모리에 저장되는 최대 반환 함수 수를 나타내며 캐시 크기는 다양합니다 .

그래서 가장 최근의 2056 개의 호출을 서로 다른 매개 변수로 캐싱합니다. 문서에 따르면

: https://docs.python.org/3/library/functools.html#functools.lru_cache

If maxsize is set to None, the LRU feature is disabled and the cache can grow without bound. The LRU feature performs best when maxsize is a power-of-two.

이 모든 다른 기능을 절약 할 수는 캐시 메모리에 호출합니다.

0

감사합니다. 당신 말이 맞아요. 나는 작업 관리자를 다시 확인했다. 소비 된 메모리는 파이썬으로 간주됩니다. 내 식은 아닙니다. 이제 1GB 이상입니다. 이것은 Windows 10의 제한 사항이 아닙니다.