はじめに
mcomixは漫画等が非常に読みやすいもののpython2であること、そして画像一時ファイルが/tmp以下に作られてしまいHDDアクセスが著しい。
そこで、python3ベースでforkしているmcomixに手を加えて画像キャシュの効率化を計った。
環境
Linux Mint 19.3(おそらく他のものでディストリビューションでも問題ない)
git
python 3以上
memory-tempfile2.3.2以上(公式web: https://pypi.org/project/memory-tempfile/)
他はgitのREADME.rst参照
ソースの取得
gitにてソースを自分の作業ディレクトリに移行する。https://github.com/mimaburao/mcomix3.git
$git clone https://github.com/mimaburao/mcomix3.git
ライブラリのインストール
README.rstを参照して必要なライブラリをインストール後、memory-tempfileをインストールする。
$pip3 install memory-tempfile
画像キャッシュのコードを追加
clone上では変更済みになっている。
作業内容としては、
Memoeytempfileのインスタンス(self._tempfile)を作成後、TemporaryDirectory関数を呼び出すと元のコードを流用できる。(以下に修正箇所の抜粋)
from memory_tempfile import MemoryTempfile
class RecursiveArchive(archive_base.BaseArchive):
def __init__(self, archive, prefix='mcomix.'):
self._tempfile = MemoryTempfile() #memory-tempfileを使うときのインスタンス
self._tempdir = self._tempfile.TemporaryDirectory(
prefix=prefix, dir=prefs['temporary directory']) #TemporaryDirectoryと同様に利用できる。
問題点
PCの物理メモリにRAMは依存してしまう。通常はdf -hで確認できる。/run/user/なんとか にあるメモリーが利用できる。このメモリーを超えるとディスクエラーが出てしまう。
感想
大本のmcomix1.2.1はソフトウェアとしてインストール出来る。しかし、更新が停滞しているようなのでこうしたforkの方で細かい更新がかかれば幸いである。今回はpython3ベースのmcomixがすでにあったため、画像キャッシュのRAM化が可能となった。
RAMを利用するのは"設定"で出来るようになればさらに使い勝手が向上するだろう。いずれは、大きなファイルはメモリー容量一杯になるまで読み込んで、逐次更新できるようになればRAMで完結するはずである。
参考
Mcomix公式 https://sourceforge.net/projects/mcomix/
Mcomixのフォーク(python3ベース) https://github.com/multiSnow/mcomix3
memoey-tempfile公式: https://pypi.org/project/memory-tempfile/