🔄

Pythonメモリ問題の解決策: ガベージコレクションからプロセスの削除まで

2023/10/29に公開

はじめに

pythonでメモリに悩まされたことはありませんか?MemoryErrorに苦しんだことはありませんか?

今回はpythonのメモリを解放する方法を簡単に紹介します。

ガベージコレクション&メモリの最適化

import gc 
import ctypes

gc.collect()
libc = ctypes.CDLL("libc.so.6")
libc.malloc_trim(0) #メモリアロケーションのための内部データ構造の最適化

ctypesは、pythonからC互換のデータ型およびC共有ライブラリを使って動的リンクするためのモジュールです。libc.so.6はLinuxの標準Cライブラリです。

pythonの一部ライブラリはC言語で動いているので、メモリアロケーションの最適化が効く場合があります。

オブジェクトの削除

del {オブジェクト}

メモリ節約の観点だと、使用済みのオブジェクトを都度削除すると良いです。

プロセスの削除

% kill -9 {プロセスID}

終了したと思い込んでいるプロセスがCPUのメモリを占有しているケースがあるので、topjobsなどで不要なプロセスを確認して削除してください。

その他

今回は触れていませんが、以下の記事でメモリ管理について説明されています。

https://yusekita.com/detail/78d1f7f8-dd9e-4b04-b9d6-f26e2e0d2a0e/

https://zenn.dev/shimakaze_soft/scraps/b1d42a2b13ab8d

Discussion