python交互式shell中的内存泄漏

时间:2012-07-22 22:27:36

标签: python memory-leaks ubuntu-12.04

当我运行python 2.7交互式shell(在Ubuntu 12.04 LTS中)时,我得到的似乎是内存泄漏。当我启动一个交互式shell时,内存使用率会以相当均匀的速率上升,直到使用所有内存(3.9gb),然后它回击到80%(ish)并且交换空间跳跃大约200-400mb并且它关闭并提供提示,但任何进一步的交互都会将RAM使用率恢复到100%(使系统几乎无法运行)。

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

修改: 我删除了我的.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文件,以便它只存储几百行的历史记录。

1 个答案:

答案 0 :(得分: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多行,我就会做错事。