【Python】cachetools를 이용한 처리의 고속화

  • 캐쉬를 이용한 처리의 고속화가, python에서도 가능한가 어떤가를 조사.
  • 결과, cachetools라는 라이브러리를 이용해 쉽게 이용할 수 있는 것이 판명.
  • 그래서 이번에는 라이브러리의 개요와 처리의 기술예를 기재.
  • ※이 내용에서는, 개요나 결과 이미지·기본 기술을 취급하기 위해, 상세 내용은 문서 를 참고.

  • 개요


  • cachetools란, 캐시를 이용한 고속화 처리(메모화)를 정리한 컬렉션 라이브러리.
  • 특징은 이하.
  • 적은 설명으로 많은 캐시 알고리즘을 처리할 수 있다.
  • 확장 가능하고, 용도나 환경에 맞추어 적절한 구조로 변경하는 것이 가능.
  • 데이터는 RAM에 저장됩니다.

  • Github : cachetools

  • 결과


  • 이하의 2매의 비교 화상과 같이, 적은 기술로 용이하게 무거운 처리를 고속화하는 것이 가능.





  • 환경


  • Google Colaboratory

  • 설치


  • 다음 명령을 사용하여 cachetools 라이브러리를 설치합니다.
  • pip install cachetools
    

    설명 예



    ※이 내용에서는, 개요나 결과 이미지·기본 기술을 취급하기 위해, 상세 내용은 문서 를 참고.

    기본


  • 표준(옵션 지정 없음)의 캐쉬 처리를 이용하는 경우.
  • # ライブラリの読み込み
    from cachetools import cached
    
    # キャッシュ有効化
    @cached(cache ={})
    def fibonacci(n):
      if n <= 2:
        return 1
      else:
        return fibonacci(n - 2) + fibonacci(n - 1)
    
    print(fibonacci(30))
    

    각 옵션


  • 이하 이용 가능한 캐시 처리의 종류는 아래와 같다.



  • 이름
    내용


    TTLCache
    캐시의 존속 가능 시간 지정. 존속 가능 시간을 넘은 것에는 액세스 불가. 가장 사용빈도가 낮은 아이템으로부터 파기된다.

    LFUCache
    최소 사용 빈도. 아이템 취득 빈도를 계측해, 가장 빈번하게 사용되지 않는 것으로부터 파기

    LRUCache
    가장 긴 미사용 빈도. 가장 오래 사용되지 않은 것에서 파기

    RRCache
    무작위. 항목을 무작위로 선택하고 거기에서 파기


  • 이하, 기술 예
  • # ライブラリの読み込み
    from cachetools import cached, LFUCache, TTLCache, RRCache
    
    @cached(cache=LFUCache(maxsize=10))  # 最大保持数
    def get_all_item:
      # 処理
    
    @cached(cache=TTLCache(maxsize=10, ttl=300))  # 最大保持数と存続可能時間
    def get_user_item:
      # 処理
    
    @cached(cache=RRCache(maxsize=10, choice=min))  # 最大保持数と任意の要素を返す代替関数
    def get_random:
      # 処理。cache.choiceで指定関数(min)の呼び出し可能。
    

    참고


  • Github
  • 문서
  • Cachetools module in Python
  • 좋은 웹페이지 즐겨찾기