1. ホーム
  2. python

[解決済み] Pythonで明示的にメモリを解放するにはどうしたらいいですか?

2022-03-19 04:54:16

質問

私は、大きな入力ファイルに作用して、三角形を表す数百万個のオブジェクトを作成するPythonプログラムを書きました。 そのアルゴリズムは

  1. 入力ファイルを読み込む
  2. ファイルを処理し、頂点で表される三角形のリストを作成します。
  3. 頂点のリストの後に三角形のリストが続くという OFF 形式で出力する。 三角形は頂点のリストへのインデックスで表される。

三角形を出力する前に頂点の完全なリストを出力するというOFFの要件は、ファイルに出力を書き込む前に三角形のリストをメモリに保持しなければならないことを意味します。 その間、リストの大きさのためにメモリ・エラーが発生します。

Pythonにデータの一部が不要になり、解放できることを伝える最善の方法は何でしょうか?

どのように解決するのですか?

によると Python公式ドキュメンテーション で、参照されないメモリを解放するためにガベージコレクタを明示的に呼び出すことができます。 gc.collect() . 例

import gc

gc.collect()

を使用して廃棄するものをマークした後、それを実行する必要があります。 del :

del my_array
del my_object
gc.collect()