「Pythonの処理が遅くて何とかしたい・・・」
「メモリ不足でキャッシュを利用したくても利用できない・・・」
「MemcachedやRedisを利用できる環境ではない・・・」
このような場合には、DiskCacheがオススメです。
この記事では、ディスクをキャッシュに利用できるDiskCacheについて解説しています。
本記事の内容
- DiskCacheとは?
- DiskCacheのシステム要件
- DiskCacheのインストール
- DiskCacheの動作確認
それでは、上記に沿って解説していきます。
DiskCacheとは?
DiskCacheとは、ディスクおよびファイルバックアップキャッシュライブラリです。
Pythonのみで書かれ、Djangoと互換性があります。
通常、MemcachedやRedisなどのキャッシュはメモリ上にデータが保存されます。
しかし、DiskCacheではメモリではなくディスク上にデータを保存します。
(※メモリにはキーのようなモノ、ディスクにはデータ本体を保存している模様)
もちろん、ディスク上のキャッシュはパフォーマンスの面では劣ります。
単純に比較すれば、DiskCacheはMemcachedやRedisに速度面では完敗です。
ただし、メモリに負荷を与えないという利点がDiskCacheにはあります。
このことにより、トータルでDiskCacheの方がパフォーマンス的に優れる可能性もあります。
メモリが一杯で処理待ちになるということも十分に考えられます。
このような場合には、DiskCacheを利用した方が高速である可能性もあるということです。
そもそも、メモリに不安がある場合はキャッシュの利用を諦めます。
そんな環境であっても、DiskCacheを用いればキャッシュを利用することが可能になります。
これだけでも、十分にDiskCacheを利用する価値があると言えます。
以上、DiskCacheについて説明しました。
次は、DiskCacheのシステム要件を説明します。
DiskCacheのシステム要件
現時点(2022年8月)でのDiskCacheの最新バージョンは、5.4.0となります。
この最新バージョンは、2021年12月31日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
これは、setup.pyに記載されている内容です。
しかし、公式サイトでは次のような記述もあります。
DiskCacheの開発自体が、Python 3.10で行われているということです。
では、なぜこのような記載に差異があるのでしょうか?
これは、setup.pyの更新忘れが原因にあります。
実際、GitHub上ではsetup.pyの更新日付が少し古いです。
他のライブラリでも、setup.pyの更新漏れはよく見かけます。
とりあえず、Python 3.7以降であればOKということです。
これは、以下のPython公式開発サイクル通りです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python 3.6のサポートは、2021年で終了していることに注意しましょう。
他には、システム要件はありません。
DiskCacheは、pure-Pythonのライブラリです。
つまり、DiskCacheはPythonだけで開発されています。
そのため、DiskCacheはPythonが動けばどこでも動くと言えます。
以上、DiskCacheのシステム要件を説明しました。
次は、DiskCacheのインストールを説明します。
DiskCacheのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.2.2 setuptools 64.0.3 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、DiskCacheのインストールです。
DiskCacheのインストールは、以下のコマンドとなります。
pip install diskcache
DiskCacheのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。
$ pip list Package Version ---------- ------- diskcache 5.4.0 pip 22.2.2 setuptools 64.0.3 wheel 0.36.2
DiskCacheが依存するパッケージは、ありません。
そのため、DiskCacheは既存環境に容易に導入可能です。
このことにより、DiskCacheを既存環境でも容易に試せます。
メモリ不足が懸念される箇所での検証が、簡単にできるということです。
以上、DiskCacheのインストールを説明しました。
次は、DiskCacheの動作確認を説明します。
DiskCacheの動作確認
DiskCacheの動作確認を行います。
次の2つのスクリプトを用意します。
set_test.py
import diskcache as dc cache = dc.Cache('tmp') # SET cache['key'] = 'Disk Cache -- Disk and file backed persistent cache.'
get_test.py
import diskcache as dc cache = dc.Cache('tmp') # GET result = cache['key'] print(result)
まず、set_test.pyを実行します。
この時点でディスクを利用したキャッシュが実施済みとなります。
次に、get_test.pyを実行します。
以下のようにコンソールに表示されれば、DiskCacheは機能しています。
Disk Cache -- Disk and file backed persistent cache.
以上、DiskCacheの動作確認を説明しました。