2

当我运行 python 2.7 交互式 shell(在 Ubuntu 12.04 LTS 中)时,我得到了似乎是内存泄漏的情况。当我启动一个交互式 shell 时,内存使用率以相当均匀的速度增加,直到所有 ram (3.9gb) 被使用,然后它回落到 80% (ish) 并且交换空间增加了 ~200-400mb 并且它平稳并提供提示,但任何进一步的交互都会将 RAM 使用率推回到 100% 的位置(使系统几乎无法运行)。

交互式 shell 可以从 gnome 终端启动,或者当从另一个盒子 ssh 进入计算机时(我正在使用用于 android 的 connectbot 进行测试),也会出现同样的问题。

编辑:我删除了我的 .pythonrc.py 文件,问题似乎已经消失了。我最近没有更改它(我一个月前创建了它,从那以后就没有碰过它,这个问题从昨天开始)。

这是我的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 回答