Python论坛  - 讨论区

标题:[python-chinese] 如何检测内存泄漏的位置?

2007年11月15日 星期四 18:08

Lee MaRS leemars在gmail.com
星期四 十一月 15 18:08:39 HKT 2007

为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。

对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:14

Jiahua Huang jhuangjiahua在gmail.com
星期四 十一月 15 18:14:32 HKT 2007

Python GC 是基于引用计数的,
你的程序怎么写的?

在 07-11-15,Lee MaRS<leemars at gmail.com> 写道:
> 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。
>
> 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用?
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:18

lubiao lubiao.py在gmail.com
星期四 十一月 15 18:18:10 HKT 2007

On Nov 15, 2007 6:08 PM, Lee MaRS <leemars at gmail.com> wrote:
> 为了跑一个8x万条数据的处理写了一个python程序,结果一边跑就一边发现内存使用越来越多,然后没一会儿程序就因为内存不足挂掉了。
>
> 对python程序怎么检测内存泄漏实在没有心得,想请教一下,是否有一些工具可以利用?

如果 没调用什么别的c 写的库
一般不会内存泄漏的。
是否是算法问题。是否有 list 或者 字典 一直在 膨胀。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:19

Lee MaRS leemars在gmail.com
星期四 十一月 15 18:19:53 HKT 2007

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:25

Leo Jay python.leojay在gmail.com
星期四 十一月 15 18:25:08 HKT 2007

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:34

Lee MaRS leemars在gmail.com
星期四 十一月 15 18:34:44 HKT 2007

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月15日 星期四 18:35

Lee MaRS leemars在gmail.com
星期四 十一月 15 18:35:50 HKT 2007

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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月19日 星期一 12:00

Alec huanghao.c在gmail.com
星期一 十一月 19 12:00:07 HKT 2007

这真是个大问题。

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


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月21日 星期三 11:08

doudou doudou array.doudou在gmail.com
星期三 十一月 21 11:08:26 HKT 2007

应该是执行过程中某些数据结构存的数据越来越多,而不是内存泄漏。我有个程序,每天分析一遍4xx万条记录的,在一个8GB的机器上,一直也没什么问题。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号