免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3254 | 回复: 6

郁闷的一天 [复制链接]

论坛徽章:
0
发表于 2005-09-29 22:07 |显示全部楼层
twisted和psyco在一起会有memory leak out
切记,切记
twisted1.3.0, python2.4.2, psyco1.4

论坛徽章:
0
发表于 2005-09-30 09:25 |显示全部楼层

郁闷的一天

恩,能分享一下具体的例子?

论坛徽章:
0
发表于 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()) 会维持在一定数值之内,而且会自动地回收.

论坛徽章:
0
发表于 2005-09-30 12:19 |显示全部楼层

郁闷的一天

psyco是在将python代码变成本地代码时就保存起来,以后来转换时就不用重新来过了,因此会占用大量的内存,这一点psyco文档中应该有说明啊。会不会是这个原因,不然它无法加速程序运行。就是通过空间换时间。

论坛徽章:
0
发表于 2005-09-30 12:35 |显示全部楼层

郁闷的一天

但是占用的内存数目在不断的增大,我用 ab测了一下
10000 rquest会占用大约 200M的内存,
100000 request就把我的机器的整个内存占用完了,系统报告虚拟内存不足 ..(我的机器1GB RAM)

论坛徽章:
0
发表于 2005-09-30 17:56 |显示全部楼层

郁闷的一天

我想可能是psyco报的错。

论坛徽章:
0
发表于 2005-10-08 09:16 |显示全部楼层

郁闷的一天

对于twisted,每个连接是一个进程,如果你将psyco放到了进程代码内,而没有在断开的时候及时销毁,可能出现你说的大量内存占用的问题。
或许你可以将需要psyco的代码放到一个class中import,这样可能会好些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP