本文实例讲述了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引用计数操作示例相关推荐

  1. python中集合运算_Python—集合的操作、文件的操作

    1.集合的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: 1>>> s1 = set('abcd') #同s1 ...

  2. dictionary在python中什么意思_Python 字典(Dictionary)操作详解

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...

  3. python读conf配置文件_python读写配置文件操作示例

    本文实例讲述了python读写配置文件操作.分享给大家供大家参考,具体如下: 在用编译型语言写程序的时候,很多时候用到配置文件,作为一个约定的规则,一般用 ini 文件作为配置文件,当然不是绝对的,也 ...

  4. python乘法函数_Python中列表与元组的乘法操作示例

    本文实例讲述了Python中列表与元组的乘法操作.分享给大家供大家参考,具体如下: 直接上code吧,还可以这么玩儿 列表乘法: li=[1,] li=li*3 print(li) out: [1, ...

  5. python里try和except用法_Python中的错误和异常处理简单操作示例【try-except用法】...

    本文实例讲述了Python中的错误和异常处理操作.分享给大家供大家参考,具体如下: #coding=utf8 print ''''' 程序编译时会检测语法错误. 当检测到一个错误,解释器会引发一个异常 ...

  6. python中的变量的引用_python中的变量引用小结

    python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...

  7. Python中的变量、引用、拷贝和作用域

    在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...

  8. Python中的赋值、引用和深浅拷贝

    2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...

  9. python静态变量计数器_如何在Python中使用静态变量在计数

    今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题.如何在Python中使用静态变量来计数.然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量.说实话没 ...

  10. python中变量的地址引用和拷贝

    python中变量的地址引用和拷贝 最近在自学python,看官方文档的时候被copy弄懵了,所以恶补了一下关于变量到底是怎么回事的知识,总结一下自己思考和参考其他文章的内容,此篇作为备忘录(岁数大了 ...

最新文章

  1. shell脚本报错:[: =: unary operator expected
  2. JQuery图片无限循环滚动源码
  3. PHP将json或对象转成数组
  4. boost::callable_traits的remove_member_reference_t的测试程序
  5. 基于OpenCV的简单人脸识别系统
  6. 使用javamail进行邮件发送
  7. 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
  8. C++ qsort() 函数调用时实参与形参不兼容的问题解决
  9. 多分类f1分数_机器学习之分类模型评估总结
  10. php 变量字节大小,PHP 变量
  11. 量子计算机退相干问题怎么办,量子退相干
  12. C语言编写一个计算器(附全源代码)
  13. cnpack导致view快捷键失灵。
  14. STM32 外部晶振电路设计和匹配
  15. 专利修改:solidworks出线条图
  16. 周涨粉超30w B站UP主非非宇Fay粉丝增长密码是什么?
  17. r 字符串转化为数值_【R语言】tidyverse之一:读写数据
  18. 社会保障卡读取基本文件数据
  19. mongoose http服务器对TCP流的接收处理
  20. Python 一个快速视频剪辑编辑神器 — Moviepy

热门文章

  1. 图神经网络中可能用到的11种距离, 小结
  2. 翻译pdf中的英文 python_浅谈python实现Google翻译PDF,解决换行的问题
  3. python怎么解压_Python-解压缩的方法
  4. android launcher推荐,追求效率的你,需要这款 Android 最快启动器:FastKey Launcher
  5. ROS入门-8.发布者Publisher的编程实现
  6. 计网学习第一章:概述
  7. Android自定义view之measure、layout、draw三大流程
  8. 树莓派4bwlan驱动_树莓派4到手,你了解它所使用的新版Debian系统吗?
  9. android studio service directory path,Android Studio User目录缓存搬移到指定目录
  10. 海信计算机怎么开机,将海信电视连接到计算机的步骤_计算机的基本知识_IT /计算机_信息...