2017-07-02 6 views
1

pyplotを使っていくつかのグラフを描いた後、Pythonはメモリエラーを出します(私はラップトップ上で100万ポイント以上の描画をします - そして、エラーがポイントの量と直接関係する前にいくつのグラフを描くことができるか)。Python/matplotlibのメモリをクリアするには?

グラフを描画できるようにするために、後でメモリをクリアするにはどうしたらいいですか?今の唯一のオプションはctrl + .で、カーネルを再起動することです。

私が推奨さを試してみました:

matplotlib.pyplot.close("all") 
matplotlib.pyplot.clf() 

はエラーをクリアしません。

答えて

0

あなたがJupyterノートブックで作業していると仮定すると、セル内で%resetを呼び出すことができます。

+0

標準的なエイサーラップトップ。 – Tony

+0

Tony、Jupyterノートブックはハードウェアではなく、ソフトウェア(多くのPython IDEの1つ)です。 – user3666197

+0

user3666197私はSpyderを使用しています。 – Tony

0

多分これは、より最近のリビジョンで修正されていますが、私はまだこれを使用します。

plt.close() 
# http://matplotlib.org/users/pyplot_tutorial.html 
# >>> WORKING WITH MULTIPLE FIGURES AND AXES 
# is a must 

pyplot tutorialは説明する:

あなたがフィギュアをたくさん作っている場合、あなたは注意する必要がありますもう1つの事柄:図に必要なメモリは、図が明示的に閉じられるまで完全に解放されません。.close()

図へのすべての参照を削除、および/または図が画面上に表示されるウィンドウを殺すためにウィンドウマネージャを使用して.close()が呼び出されるまでpyplotは内部参照を保持しているため、十分ではありません。


扱われない、また全体

としてpythonインタプリタをクラッシュすることができた場合は、これに頭痛の多くを持っていました。

# ##################################################################################### 
# 
# AFTER SOME 50 calls, matplotlib crashed first, after a few more, python was killed too 
# 
# ###################################################################################### >>> http://stackoverflow.com/questions/32318643/how-to-properly-delete-a-matplotlib-figure-embedded-in-a-child-window-in-pyside 
# 
# Traceback (most recent call last): 
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent 
#  stringBuffer = self.renderer._renderer.tostring_bgra() 
# MemoryError 
# Traceback (most recent call last): 
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent 
#  stringBuffer = self.renderer._renderer.tostring_bgra() 
# MemoryError 
# Traceback (most recent call last): 
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent 
#  stringBuffer = self.renderer._renderer.tostring_bgra() 
# MemoryError 
# Traceback (most recent call last): 
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent 
#  stringBuffer = self.renderer._renderer.tostring_bgra() 
# MemoryError 
# 
# ###################################################################################### 
+0

質問者はすでに 'matplotlib.pyplot.close(" all ")'を使って試してみました。あなたの答えはこの問題を解決するために何か新しいものを提供していますか? – ImportanceOfBeingErnest

+0

私は誰にとってもこの答えを役立てようとしています。ここには激怒はありません。私もコンテンツを削除しませんでしたが、フォーマットガイドラインに従って作成しました。 '> 'を付した引用は、引用がどこから来るのか(他のコンテンツへのリンク)を明確にする必要があります。そうでなければプレーンテキストでなければなりません。見出しは、セクションのタイトルとして使用されるもので、通常のコンテンツを大きくすることはできません。この答えが質問者を助けるために追加したものであることはまだ分かりませんので、plt.close()と 'plt.close(" all ") 。 – ImportanceOfBeingErnest

+0

user3666197:モデレータにあなたの発言を報告しました。私たちはこれについて多くのことを話しました。あなたの仕事に合理的な改訂を受け入れてください。 @重要なことが言及されている見積もりの​​問題がたくさん出てくる。材料が他の場所から来て、あなたがソースを挙げるなら、それは引用です。見積もりブロックは、一般的なハイライトデバイスではありません。 – halfer

関連する問題