本文實例講述了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 """
python數據類型有幾種、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
python科學計數法和浮點數相互轉化。print l_ref
del l2
print l_ref
another_list = [0, 0, 7]
a_ref = get_ref(another_list)
print a_ref
python 爬蟲,輸出:
c_ulong(2L)
c_ulong(1L)
c_ulong(0L)
c_ulong(1L)
運行結果如下圖所示:
python 數據類型。另外python編譯成字節碼的模塊為 dis
import dis # bytecode disassembler module
def time_2(x):
return 2 * x
dis.dis(time_2)
print "*"*20
python 類,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 """
python3.7?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)
python和java、運行結果:
7?????????? 0 LOAD_CONST?????????????? 1 (2)
3 LOAD_FAST??????????????? 0 (x)
6 BINARY_MULTIPLY
7 RETURN_VALUE
********************
python怎么統計列表中的個數?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
python對列表中的元素計數,18 CALL_FUNCTION??????????? 1
21 RETURN_VALUE
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
本文標題: Python引用計數操作示例
本文地址: http://www.cppcns.com/jiaoben/python/237953.html
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态