2007年11月15日 星期四 18:08
为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用?
2007年11月15日 星期四 18:14
Python GC 是基于引用计数的, 你的程序怎么写的? 在 07-11-15,Lee MaRS<leemars at gmail.com> 写道: > 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 > > 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用? >
2007年11月15日 星期四 18:18
On Nov 15, 2007 6:08 PM, Lee MaRS <leemars at gmail.com> wrote: > 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 > > 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用? 如果 没调用什么别的c 写的库 一般不会内存泄漏的。 是否是算法问题。是否有 list 或者 字典 一直在 膨胀。
2007年11月15日 星期四 18:19
On Nov 15, 2007 6:14 PM, Jiahua Huang <jhuangjiahua在gmail.com> wrote: > Python GC 是基于引用计数的, > 你的程序怎么写的? 恩,这我知道。我基本上没有用什么奇怪的功能,就是用urllib2去读网页,然后用HtmlReader转成XML树,用XPath处理了一下,然后写进文件。跑了个简单的多线程,罢了。 XML树那一块似乎是要自己主动去调用一个函数Release一下。我就把从HtmlReader回来的那个结点(就是根结点了)Release了一下。 // 莫非XML树那一块XPath里面每个返回的结点都要Release? > > 在 07-11-15,Lee MaRS<leemars在gmail.com> 写道: > > 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 > > > > 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用? > > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年11月15日 星期四 18:25
On Nov 15, 2007 6:19 PM, Lee MaRS <leemars在gmail.com> wrote: > On Nov 15, 2007 6:14 PM, Jiahua Huang <jhuangjiahua在gmail.com> wrote: > > Python GC 是基于引用计数的, > > 你的程序怎么写的? > > 恩,这我知道。我基本上没有用什么奇怪的功能,就是用urllib2去读网页,然后用HtmlReader转成XML树,用XPath处理了一下,然后写进文件。跑了个简单的多线程,罢了。 > > XML树那一块似乎是要自己主动去调用一个函数Release一下。我就把从HtmlReader回来的那个结点(就是根结点了)Release了一下。 > > // 莫非XML树那一块XPath里面每个返回的结点都要Release? > 要解析XML啊。要么换一个库试试? 我一直用ElementTree,感觉很不错的。 -- Best Regards, Leo Jay
2007年11月15日 星期四 18:34
On Nov 15, 2007 6:18 PM, lubiao <lubiao.py在gmail.com> wrote: > On Nov 15, 2007 6:08 PM, Lee MaRS <leemars在gmail.com> wrote: > > 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 > > > > 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用? > > 如果 没调用什么别的c 写的库 > 一般不会内存泄漏的。 > 是否是算法问题。是否有 list 或者 字典 一直在 膨胀。 应该没有吧,我都是在过程里用用,写进文件里面就完了。也没有什么要存下来的。也没有全局变量。 > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年11月15日 星期四 18:35
On Nov 15, 2007 6:25 PM, Leo Jay <python.leojay在gmail.com> wrote: > On Nov 15, 2007 6:19 PM, Lee MaRS <leemars在gmail.com> wrote: > > On Nov 15, 2007 6:14 PM, Jiahua Huang <jhuangjiahua在gmail.com> wrote: > > > Python GC 是基于引用计数的, > > > 你的程序怎么写的? > > > > 恩,这我知道。我基本上没有用什么奇怪的功能,就是用urllib2去读网页,然后用HtmlReader转成XML树,用XPath处理了一下,然后写进文件。跑了个简单的多线程,罢了。 > > > > XML树那一块似乎是要自己主动去调用一个函数Release一下。我就把从HtmlReader回来的那个结点(就是根结点了)Release了一下。 > > > > // 莫非XML树那一块XPath里面每个返回的结点都要Release? > > > > 要解析XML啊。要么换一个库试试? > 我一直用ElementTree,感觉很不错的。 > 我用的是PyXML的说,Python 2.4的。 > > -- > Best Regards, > Leo Jay > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年11月19日 星期一 12:00
这真是个大问题。 valgrind 免费的。 #./valgrind --leak-check=yes ./python your_script.py valgrind 会跟踪 malloc(), free()。 最好加 DEBUG 重新编译 python。 如有可能最好人肉检查,或许是你程序的问题。 因为检查脚本语言的内存泄漏很麻烦。。而且 要对 Python 本身的实现很熟悉。 ps 你会看到满屏的 mem leak 警告. Lee MaRS 写道: > 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。 > > 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用? > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
2007年11月21日 星期三 11:08
应该是执行过程中某些数据结构存的数据越来越多,而不是内存泄漏。我有个程序,每天分析一遍4xx万条记录的,在一个8GB的机器上,一直也没什么问题。
Zeuux © 2025
京ICP备05028076号