a*****s 发帖数: 2663 | 1 python 新手求教. 最近才看python,写了个GUI程序处理数据. 主要就是每次打开一个
几百兆大小的binary文件,包含几百帧图象,读到一个三维数组, 用matplotlib画出指定
一帧的位图,鼠标点击位图,记录一些position,选择一些参数,然后做一些计算,存盘.
一开始感觉work得很好.但是突然发现严重的问题.就是处理完第一个,然后处理第2,3,4
个文件的时候,很快慢了下来.很明显,从文件读进的数据还在memory里.
具体说,文件经由read_data()函数返回成numpy的ndarray存到一个wxFrame类的成员,然
后display到一个canvas.如果我把matplotlib画图的相关语句删去,似乎可以不断选择
open菜单打开文件处理一个又一个数据文件,内存消耗稳定在1~1.5个文件大小.一旦
uncomment相关画图命令,每打开一个新文件,内存消耗就增加大约一个文件大小.打开到
第6,7个文件,就会有memory error提示.
class MyFrame(wxFrame):
....
def OnOpen(self, event): | m********a 发帖数: 1312 | 2 1. In your python code, do you still have reference to old image data? If
yes, get rid of it and the memory will be released.
2. 没用过matplotlib,不知道它的python wrapper是否可能导致memory leak。有时候
用一些外部的package有可能需要通过提供的API手动清理不用的内存。印象中用
wxPython时好像没有什么明显memory leak问题。 | r****t 发帖数: 10904 | 3 matplotlib FAQ 读读行吧? memleak_gui.py run 下看看再贴个结果,matplotlib 的
几个 GUI backend 基本上都有点问题。 |
|