`
finux
  • 浏览: 202469 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PyIntObject的对象池技术太可怕了~

阅读更多

最近在读《Python源码剖析》,只是看到PyIntObject的对象池技术而已,根据书中的讲解及源码可知:一旦系统中的某块内存被Python申请用于整数对象,那么这块内存在Python进程结束之前,将永远不会得到释放。

 

这样一句话实在太可怕了,于是做了个小小的实验:

假设sizeof(PyIntObject) = 12byte,那么1GB = 1024 * 1024 * 1024 / 12个PyIntObject,既然如此,试试运行下面的Python语句:

for i in range(1024 * 1024 * 1024 / 12):
	pass

效果怎么样,嘻嘻,机器卡死了吧~

呵呵,再看看你机器的CPU及内存使用情况看看,嘻嘻,没被吓着吧~

 

下面看下我的机器运行的结果:

  • 大小: 93.1 KB
1
0
分享到:
评论
6 楼 finux 2011-01-13  
cnSpirit 写道
我用的是python 3.1,完全没有楼主的问题。。。

Python 3.X应该是不会有该问题的,她连编码的问题应该也不会有吧。
5 楼 cnSpirit 2011-01-13  
我用的是python 3.1,完全没有楼主的问题。。。
4 楼 lzyzizi 2010-07-14  
range()不是这样用的吧,对于你这种情况应该使用xrange,绝对不会卡死。
3 楼 finux 2010-07-04  
jasongreen 写道
x=range(1024*1024*1024/12)
x=None
import gc
gc.collect()

别for了,直接在shell下试试这个。确实很恐怖

呵呵,1G的内存呀~
2 楼 jasongreen 2010-07-04  
x=range(1024*1024*12)
x=range(1024*1024*12)
x=range(1024*1024*12*2)
x=range(1024*1024*12*2)

试试这个,其实也没那么可怕。
1 楼 jasongreen 2010-07-04  
x=range(1024*1024*1024/12)
x=None
import gc
gc.collect()

别for了,直接在shell下试试这个。确实很恐怖

相关推荐

    Python源码剖析

    - PYINTOBJECT:这是Python中整数对象的内部表示,包含整数值、引用计数等信息。 - 创建与维护:Python通过三种方式创建整数对象:直接创建、复用小整数对象池或动态分配内存。小整数对象是预先创建并缓存的,用于...

    Python源码剖析(Robert+Chen)

    - **PyIntObject实现**:在SmallPython中,`PyIntObject`的实现非常简单,没有包含CPython中复杂的对象缓冲池机制。这意味着每个整数对象都会独立分配内存,并且不共享相同的对象实例。 - **创建和操作整数对象**:...

    Python整数对象实现原理详解

    本文旨在深入探讨Python整数对象的具体实现原理,帮助读者理解其背后的技术细节。我们将从Python整数对象的基础结构入手,逐步深入到其实现机制的核心部分,并通过示例代码进行详细说明。 #### 二、Python整数对象...

    python-c-api-demo:用于CodeMonkeys的Python C API演示

    例如,`PyIntObject`表示整型对象,`PyDictObject`表示字典对象。 5. **方法定义**:通过C API,你可以定义新的Python类及其方法。使用`PyMethodDef`结构体和`PyMODINIT_FUNC`宏定义模块初始化函数。 6. **函数...

    基于net的超市管理系统源代码(完整前后端+sqlserver+说明文档+LW).zip

    功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。

    LABVIEW程序实例-公式节点.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    大米商城开源版damishop(适合外贸)

    大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插

    LABVIEW程序实例-通过全局变量接收数据.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    LABVIEW程序实例-日历控件.zip

    labview程序代码参考学习使用,希望对你有所帮助。

Global site tag (gtag.js) - Google Analytics