このブログは当初、Crawlbase Blog に投稿されました
ソフトウェア アプリケーションで優れたユーザー エクスペリエンスを作成するには、効率的で高速なコードが重要です。ユーザーは、Web ページの読み込み、機械学習モデルのトレーニング、スクリプトの実行など、遅い応答を待つことを好みません。コードを高速化する 1 つの方法はキャッシュです。
キャッシュの目的は、頻繁に使用されるデータを一時的にキャッシュして、何度も再計算したり取得したりすることなく、プログラムがより迅速にデータにアクセスできるようにすることです。キャッシュにより、応答時間が短縮され、負荷が軽減され、ユーザー エクスペリエンスが向上します。
このブログでは、キャッシュの原則、その役割、ユースケース、戦略、Python でのキャッシュの実例について説明します。始めましょう!
Python では複数の方法でキャッシュを実行できます。 2 つの一般的な方法を見てみましょう。キャッシュ用の手動デコレータを使用する方法と、Python の組み込み functools.lru_cache.
を使用する方法です。デコレーターは、別の関数をラップする関数です。関数呼び出しの結果をメモリに保存し、同じ入力が再度呼び出された場合にキャッシュされた結果を返すキャッシュ デコレータを作成できます。以下に例を示します:
import requests # Manual caching decorator def memoize(func): cache = {} def wrapper(*args): if args in cache: return cache[args] result = func(*args) cache[args] = result return result return wrapper # Function to get data from a URL @memoize def get_html(url): response = requests.get(url) return response.text # Example usage print(get_html('https://crawlbase.com'))
この例では、初めて get_html が呼び出されたときに、URL からデータをフェッチし、キャッシュします。同じ URL を使用した後続の呼び出しでは、キャッシュされた結果が返されます。
Python は、functools モジュールから lru_cache と呼ばれる組み込みのキャッシュ メカニズムを提供します。このデコレーターは関数呼び出しをキャッシュし、キャッシュがいっぱいになると最も最近使用されていない項目を削除します。使用方法は次のとおりです:
from functools import lru_cache @lru_cache(maxsize=128) def expensive_computation(x, y): return x * y # Example usage print(expensive_computation(5, 6))
この例では、lru_cache はPrice_computation の結果をキャッシュします。同じ引数を使用して関数が再度呼び出された場合、再計算ではなくキャッシュされた結果が返されます。
キャッシュ戦略を選択するときは、さまざまな条件下でキャッシュ戦略がどのように実行されるかを考慮する必要があります。キャッシュ戦略のパフォーマンスは、キャッシュ ヒット数 (キャッシュ内でデータが見つかった場合) とキャッシュのサイズによって異なります。
一般的なキャッシュ戦略の比較は次のとおりです:
適切なキャッシュ戦略の選択は、アプリケーションのデータ アクセス パターンとパフォーマンスのニーズによって異なります。
キャッシュはアプリにとって非常に役立ちます。データの取得時間とシステム負荷を軽減できます。 Web アプリや機械学習プロジェクトを構築している場合でも、システムを高速化したい場合でも、スマート キャッシュによりコードの実行を高速化できます。
FIFO、LRU、LFU などのキャッシュ方法にはさまざまな使用例があります。たとえば、LRU は頻繁にアクセスされるデータを保持する必要がある Web アプリに適しており、LFU は長期にわたってデータを保存する必要があるプログラムに適しています。
キャッシュを正しく実装すると、より高速で効率的なアプリを設計でき、パフォーマンスとユーザー エクスペリエンスが向上します。
以上がPython キャッシュ: 効果的なキャッシュでコードを高速化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。