2

Python 2.7 インタラクティブ シェル (Ubuntu 12.04 LTS で) を実行すると、メモリ リークのように見えます。インタラクティブ シェルを起動すると、すべての RAM (3.9 GB) が使用されるまでメモリ使用量がかなり均等に増加し、その後 80% (っぽい) に戻り、スワップ スペースが 200 ~ 400 MB 跳ね上がります。横ばいになり、プロンプトが表示されますが、それ以上操作を行うと、RAM 使用率が 100% に戻ります (システムがほとんど操作不能になります)。

対話型シェルは、gnome 端末から起動するか、別のボックスからコンピューターに ssh 接続したときに起動できます (私は Android 用の connectbot を使用してテストしていました)、同じ問題が発生します。

編集: .pythonrc.py ファイルを削除しましたが、問題は解決したようです。最近は変更していません (1 か月前に作成し、それ以来変更していません。この問題は昨日発生しました)。

これが私のpythonrcファイルです(.pythonrc.py

import atexit 
import os 
import readline 
import rlcompleter 

history = os.path.expanduser('~/.python_history') 
readline.read_history_file(history) 
readline.parse_and_bind('tab: complete') 
atexit.register(readline.write_history_file, history)

編集2:

.python_historyファイルを削除したところ、問題が解決したようです。ファイルは 1914155 行で、約 54MB でした。数百行の履歴のみを保存するように .pythonrc ファイルを調整するつもりです。

4

1 に答える 1

3

問題を修正するために(できれば恒久的な解決策)、.pythonrc.pyファイルに次の行を追加しました。

import atexit 
import os 
import readline 
import rlcompleter 

history = os.path.expanduser('~/.python_history') 
readline.read_history_file(history) 
readline.parse_and_bind('tab: complete')
# The added line
readline.set_history_length(200)
atexit.register(readline.write_history_file, history)

十分に愚かではない数であれば(200行ではなく)問題ないと思いますが、履歴で200行を超えると、何か間違ったことをしていると思います。

于 2012-07-22T23:14:01.483 に答える