今天浙江11选5开奖:什么是Python自動化運維內部的引用計數?

浙江11选5任3遗漏 www.ehxis.com 今天小編要跟大家分享的文章是什么是Python自動化運維內部的引用計數?什么時候增加引用計數?什么時候減少引用計數?Python自動化入門新手和正在Python自動化學習的小伙伴快來看一看吧,希望能夠對大家有所幫助!

Python內部的引用計數(sys.getrefcount):

什么是引用計數器:?
Python內部記錄著所有使用中的對象有多少引用。一個內部跟蹤變量,稱為一個引用計數器。當對象被創建時,就創建了一個引用計數,當這個對象不再需要時,也就是說,這個對象的引用計數變為0時,它被垃圾回收。(這個只是形象的說一下,并不是嚴格的100%正確,但是通俗的理解往往是最好的學習方式)

增加引用計數:

當對象被創建并(將其引用)賦值給變量時,該對象的引用技術就是被設置為1。
當同一個對象的應用或者是對象又被賦值給其他變量時,或者作為參數傳遞給函數,方法或類實例時,或者被賦值為一個窗口對象的成員時,該對象的一個新的引用,或者稱作別名,就被創建(則該對象的引用計數自動加1)

減少引用計數

當對象的引用被銷毀時,引用計數會減少。最明顯的例子就是當引用離開其作用范圍時,這種情況最經常出現在函數運行結束時,所有局部變量都被自動銷毀,對象的引用計數也就隨之減少。

當變量被賦值給另外一個對象時,源對象的引用技術也會自動減1

其他造成對象的引用計數減少的方式包括使用del語句刪除一個變量,或者當一個對象的引用計數在以下情況會減少:

  1. 一個本地引用離開了其作用范圍,比如函數結束
  2. 對象的別名被顯示的銷毀
  3. 對象的一個別名被賦值給其他的對象
  4. 對象被從一個窗口對象中移除
  5. 窗口對象本身被銷毀

例子:

import sys
a=”ab”
sys.getrefcount(“ab”)
3 第一次結果為3
b=”ab”
sys.getrefcount(“ab”)
4 第二次結果+1
b=0 b引用了其他的對象(0),對于”ab”來講就取消了一個引用
sys.getrefcount(“ab”)
3 結果在上次引用的基礎上-1

注意:在交互式解釋器中帶空格的對象引用次數永遠為3,但是在腳本中回歸正常,例如:
#!/usr/bin/env Python

coding=utf8 fdaf

import sys
print sys.getrefcount("ab cd")
a="ab cd"
print sys.getrefcount("ab cd")
b="ab cd"
print sys.getrefcount("ab cd")
c=b
print sys.getrefcount("ab cd")

垃圾收集:
不再被使用的內存會被一種稱為垃圾收集的機制釋放。像上面說的,雖然解釋器跟蹤對象的引用計數,但是垃圾收集器負責釋放內存。垃圾收集器是一塊獨立的代碼,它用來尋找引用計數為0的對象,他也負責檢查那些雖然引用計數大于0但也該被銷毀的對象。特定情形會導致循環引用。
一個循環引用發生在當你有至少兩個對象互相引用時,也就是所說的引用都消失時,這些引用仍然存在,這說明只靠引用計數是不夠的。Python的垃圾收集器實際上是一個引用計數器和一個循環垃圾收集器。當一個對象的引用計數變為0,解釋器會暫停,釋放掉這個對象和僅有這個對象可訪問的其他對象,作為引用計數的補充,垃圾收集器也會留心被分配的總量很大(以及未通過引用計數銷毀的那些) 的對象。在這種情況下,解釋器會暫停下來,試圖清理所有為引用的循環。

以上就是小編今天為大家分享的什么是浙江11选5任3遗漏運維內部的引用計數的文章,希望本篇文章能夠對正在 Python自動化學習?和從事Python自動化相關工作的小伙伴們有所幫助,想要了解更多相關知識記得關注浙江11选5任3遗漏官網,每天都會有大量優質內容與大家分享!免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code