Chinaunix

标题: 郁闷的一天 [打印本页]

作者: flaman    时间: 2005-09-29 22:07
标题: 郁闷的一天
twisted和psyco在一起会有memory leak out
切记,切记
twisted1.3.0, python2.4.2, psyco1.4
作者: xichen    时间: 2005-09-30 09:25
标题: 郁闷的一天
恩,能分享一下具体的例子?
作者: flaman    时间: 2005-09-30 11:57
标题: 郁闷的一天
是这样,用twisted写了一个web的应用程序,里面会对很多list排序,
原想是用psyco加速一些运行,但是事与愿违,
  1. import psyco
  2. psyco.full()
复制代码


我只是简单的加了上面的代码,但是运行一些请求后内存占用会很高,而且不释放,后来干脆显示的del很多不用的 object,情况还是一样


于是 查了资料
import gc #导入 python 垃圾收集器
gc.enable() #打开它

len(gc.get_objects())  然后在每个request的调用,发现object在不断的增大,但是也没找到原因,后来不用psyco就好了
len(gc.get_objects()) 会维持在一定数值之内,而且会自动地回收.
作者: limodou    时间: 2005-09-30 12:19
标题: 郁闷的一天
psyco是在将python代码变成本地代码时就保存起来,以后来转换时就不用重新来过了,因此会占用大量的内存,这一点psyco文档中应该有说明啊。会不会是这个原因,不然它无法加速程序运行。就是通过空间换时间。
作者: flaman    时间: 2005-09-30 12:35
标题: 郁闷的一天
但是占用的内存数目在不断的增大,我用 ab测了一下
10000 rquest会占用大约 200M的内存,
100000 request就把我的机器的整个内存占用完了,系统报告虚拟内存不足 ..(我的机器1GB RAM)
作者: limodou    时间: 2005-09-30 17:56
标题: 郁闷的一天
我想可能是psyco报的错。
作者: xichen    时间: 2005-10-08 09:16
标题: 郁闷的一天
对于twisted,每个连接是一个进程,如果你将psyco放到了进程代码内,而没有在断开的时候及时销毁,可能出现你说的大量内存占用的问题。
或许你可以将需要psyco的代码放到一个class中import,这样可能会好些。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2