python中引用计数_Python引用计数操作示例
本文实例讲述了Python引用计数操作。分享给大家供大家参考,具体如下:
为了简化内存管理,Python通过引用计数机制实现了自动的垃圾回收功能,Python中的每个对象都有一个引用计数,用来计数该对象在不同场所分别被引用了多少次。每当引用一次Python对象,相应的引用计数就增1,每当消毁一次Python对象,则相应的引用就减1,只有当引用计数为零时,才真正从内存中删除Python对象。
import ctypes
def get_ref(obj):
""" returns a c_size_t, which is the refcount of obj """
return ctypes.c_size_t.from_address(id(obj))
l = [1,2,3,4]
l2 =l
l_ref = get_ref(l)
print l_ref
del l
print l_ref
del l2
print l_ref
another_list = [0, 0, 7]
a_ref = get_ref(another_list)
print a_ref
输出:
c_ulong(2L)
c_ulong(1L)
c_ulong(0L)
c_ulong(1L)
运行结果如下图所示:
另外python编译成字节码的模块为 dis
import dis # bytecode disassembler module
def time_2(x):
return 2 * x
dis.dis(time_2)
print "*"*20
dis.dis(get_ref)
结合上述代码,测试示例如下:
import ctypes
import dis # bytecode disassembler module
def get_ref(obj):
""" returns a c_size_t, which is the refcount of obj """
return ctypes.c_size_t.from_address(id(obj))
def time_2(x):
return 2 * x
dis.dis(time_2)
print "*"*20
dis.dis(get_ref)
运行结果:
7 0 LOAD_CONST 1 (2)
3 LOAD_FAST 0 (x)
6 BINARY_MULTIPLY
7 RETURN_VALUE
********************
5 0 LOAD_GLOBAL 0 (ctypes)
3 LOAD_ATTR 1 (c_size_t)
6 LOAD_ATTR 2 (from_address)
9 LOAD_GLOBAL 3 (id)
12 LOAD_FAST 0 (obj)
15 CALL_FUNCTION 1
18 CALL_FUNCTION 1
21 RETURN_VALUE
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
本文标题: Python引用计数操作示例
本文地址: http://www.cppcns.com/jiaoben/python/237953.html
python中引用计数_Python引用计数操作示例相关推荐
- python中集合运算_Python—集合的操作、文件的操作
1.集合的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: 1>>> s1 = set('abcd') #同s1 ...
- dictionary在python中什么意思_Python 字典(Dictionary)操作详解
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...
- python读conf配置文件_python读写配置文件操作示例
本文实例讲述了python读写配置文件操作.分享给大家供大家参考,具体如下: 在用编译型语言写程序的时候,很多时候用到配置文件,作为一个约定的规则,一般用 ini 文件作为配置文件,当然不是绝对的,也 ...
- python乘法函数_Python中列表与元组的乘法操作示例
本文实例讲述了Python中列表与元组的乘法操作.分享给大家供大家参考,具体如下: 直接上code吧,还可以这么玩儿 列表乘法: li=[1,] li=li*3 print(li) out: [1, ...
- python里try和except用法_Python中的错误和异常处理简单操作示例【try-except用法】...
本文实例讲述了Python中的错误和异常处理操作.分享给大家供大家参考,具体如下: #coding=utf8 print ''''' 程序编译时会检测语法错误. 当检测到一个错误,解释器会引发一个异常 ...
- python中的变量的引用_python中的变量引用小结
python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- Python中的赋值、引用和深浅拷贝
2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...
- python静态变量计数器_如何在Python中使用静态变量在计数
今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题.如何在Python中使用静态变量来计数.然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量.说实话没 ...
- python中变量的地址引用和拷贝
python中变量的地址引用和拷贝 最近在自学python,看官方文档的时候被copy弄懵了,所以恶补了一下关于变量到底是怎么回事的知识,总结一下自己思考和参考其他文章的内容,此篇作为备忘录(岁数大了 ...
最新文章
- shell脚本报错:[: =: unary operator expected
- JQuery图片无限循环滚动源码
- PHP将json或对象转成数组
- boost::callable_traits的remove_member_reference_t的测试程序
- 基于OpenCV的简单人脸识别系统
- 使用javamail进行邮件发送
- 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
- C++ qsort() 函数调用时实参与形参不兼容的问题解决
- 多分类f1分数_机器学习之分类模型评估总结
- php 变量字节大小,PHP 变量
- 量子计算机退相干问题怎么办,量子退相干
- C语言编写一个计算器(附全源代码)
- cnpack导致view快捷键失灵。
- STM32 外部晶振电路设计和匹配
- 专利修改:solidworks出线条图
- 周涨粉超30w B站UP主非非宇Fay粉丝增长密码是什么?
- r 字符串转化为数值_【R语言】tidyverse之一:读写数据
- 社会保障卡读取基本文件数据
- mongoose http服务器对TCP流的接收处理
- Python 一个快速视频剪辑编辑神器 — Moviepy
热门文章
- 图神经网络中可能用到的11种距离, 小结
- 翻译pdf中的英文 python_浅谈python实现Google翻译PDF,解决换行的问题
- python怎么解压_Python-解压缩的方法
- android launcher推荐,追求效率的你,需要这款 Android 最快启动器:FastKey Launcher
- ROS入门-8.发布者Publisher的编程实现
- 计网学习第一章:概述
- Android自定义view之measure、layout、draw三大流程
- 树莓派4bwlan驱动_树莓派4到手,你了解它所使用的新版Debian系统吗?
- android studio service directory path,Android Studio User目录缓存搬移到指定目录
- 海信计算机怎么开机,将海信电视连接到计算机的步骤_计算机的基本知识_IT /计算机_信息...