1

Python を使用していますが、最近メモリ エラーが頻繁に発生します。

1 つは、プロットを .png 形式で保存することに関連しています。それらを.pdf形式で保存しようとするとすぐに、この問題はなくなりました。複数のファイルに .png を引き続き使用するにはどうすればよいですか?

次に、非常に大きなデータ ファイルを読み込んでいますが、しばらくするとメモリ不足になります。毎回閉じようとしていますが、まだ開いているものが残っているのかもしれません。Python で開かれているすべてのファイルを、ハンドラを持たずに閉じる方法はありますか?

最後に、Python は未使用の変数をすべて解放する必要がありますが、そうしていないと思います。1 つの関数だけを実行する場合は問題ありませんが、関連のない 2 つの関数を続けて実行すると (最初の関数を終了してから 2 番目の関数に進む前に、私の理解では、すべての変数を解放する必要があります)、2 番目の関数の実行中に、私は再びメモリエラーの問題に遭遇します。したがって、変数は最初の実行後に解放されないと思います。Pythonにそれらすべてを強制的に解放させるにはどうすればよいですか(変数がたくさんあり、それらのすべてを指定したくないので、delを使用したくありません)。

ご協力いただきありがとうございます!

4

2 に答える 2

1

コードを見ると、おそらくよりクリアランスが得られるでしょう。

あなたもやってみることができます

import gc
f() #function that eats lots of memory while executing
gc.collect()

これによりガベージ コレクターが呼び出され、放棄されたすべてのオブジェクトが確実に削除されます。それでも問題が解決しない場合は、objgraph ライブラリhttp://mg.pov.lt/objgraph/objgraph.htmlを調べて、誰がメモリをリークしているかを検出したり、削除し忘れた場所を見つけたりします。メモリを消費するオブジェクトへの参照。

于 2012-11-13T13:22:53.807 に答える
0

次に、非常に大きなデータ ファイルを読み込んでいますが、しばらくするとメモリ不足になります。毎回閉じようとしていますが、まだ開いているものが残っているのかもしれません。Python で開かれているすべてのファイルを、ハンドラを持たずに閉じる方法はありますか?

を使用するwith open(myfile1) as f1: ...と、ファイルを閉じたり、誤ってファイルを開いたままにすることを心配する必要はありません。

良い説明については、こちらを参照してください。

他の質問については、alex_jordan に同意します。コードの一部を示していただければ助かります。

于 2012-11-13T14:04:49.150 に答える