欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python3中延時(shí)變量與free_list鏈表的區(qū)別有哪些

本文小編為大家詳細(xì)介紹“Python3中延時(shí)變量與free_list鏈表的區(qū)別有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Python3中延時(shí)變量與free_list鏈表的區(qū)別有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有河西免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1、概念

1、區(qū)別

在Python3中,"延時(shí)變量" 和 "free_list鏈表" 是兩個(gè)不同的概念,他們之間沒(méi)有直接聯(lián)系。

2、延時(shí)變量(Lazy evaluation)

延時(shí)變量是指在某些情況下,Python不會(huì)立即計(jì)算表達(dá)式的值,而是等到需要用到這個(gè)值的時(shí)候在進(jìn)行計(jì)算。這種方式稱(chēng)為 "惰性計(jì)算" 或 "延時(shí)計(jì)算"。

例如:生成器(generator)就是一種延時(shí)計(jì)算的方式。

當(dāng)創(chuàng)建一個(gè)生成器對(duì)象時(shí),它不會(huì)立即生成所有的值,而是在需要時(shí)逐個(gè)生成,這種方式的優(yōu)點(diǎn)是:節(jié)省內(nèi)存空間和計(jì)算資源

3. free_list鏈表

free_list 鏈表 是Python3中的一個(gè)內(nèi)存管理機(jī)制。采用了垃圾回收機(jī)制來(lái)自動(dòng)管理內(nèi)存空間,其中free_list鏈表是一種可以重復(fù)利用已經(jīng)分配但未被使用的內(nèi)存塊的機(jī)制。

當(dāng)創(chuàng)建一個(gè)新對(duì)象時(shí),Python會(huì)分配一塊內(nèi)存空間,并將其標(biāo)記為已使用。當(dāng)對(duì)象不在被引用時(shí),Python會(huì)自動(dòng)將其標(biāo)記為未使用,并將其添加到free_list鏈表中。當(dāng)下次創(chuàng)建對(duì)象時(shí),Python會(huì)首先檢查free_list鏈表中是否有可重復(fù)利用的內(nèi)存塊,從而避免不必要的內(nèi)存分配和釋放操作。

2、示例

1. 延時(shí)變量示例

在這個(gè)示例中,定義了一個(gè)生成器函數(shù) fibonacci(),實(shí)現(xiàn)了斐波那契數(shù)列的生成邏輯。當(dāng)我們創(chuàng)建一個(gè)生成器對(duì)象 fib 時(shí),它不會(huì)立即生成所有的斐波那契數(shù)列數(shù)值,而是在需要時(shí)逐個(gè)生成。在這里,我們使用了 next() 函數(shù)來(lái)獲取下一個(gè)斐波那契數(shù)列數(shù)值。

# 定義一個(gè)生成器,實(shí)現(xiàn)斐波那契數(shù)列
def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a , b = b, a+b
#創(chuàng)建一個(gè)生成器對(duì)象
fib = fibonacci()
#打印前 10 個(gè)斐波那契數(shù)列數(shù)值
for i in range(10):
    print(next(fib))
'''
執(zhí)行結(jié)果如下:
0
1
1
2
3
5
8
13
21
34
'''
2.free_list鏈表

在這個(gè)示例中,我們先創(chuàng)建了兩個(gè)相同的列表對(duì)象 ab,并打印它們的內(nèi)存地址。然后,我們將 a 對(duì)象從內(nèi)存中刪除,并使用 gc.collect() 強(qiáng)制進(jìn)行垃圾回收。接著,我們創(chuàng)建了一個(gè)新的列表對(duì)象 c,并打印它的內(nèi)存地址。最后,我們使用 sys.getsizeof([]) 函數(shù)檢查 free_list 鏈表中是否有可重復(fù)利用的內(nèi)存塊

import sys
import gc
#創(chuàng)建兩個(gè)相同的列表對(duì)象
a = [1, 2, 3]
b = [1, 2, 3]
#打印a和b對(duì)象的內(nèi)存地址
print("a 的內(nèi)存地址:", id(a))
print("b 的內(nèi)存地址:", id(b))
#將a 對(duì)象從內(nèi)存中刪除
del a
# 創(chuàng)建一個(gè)新的列表對(duì)象 c
# 強(qiáng)制進(jìn)行垃圾回收
gc.collect()
c = [1, 2, 3]
#打印 c 對(duì)象的內(nèi)存地址
print("c 的內(nèi)存地址:", id(c))
 
#檢查 free_list 鏈表中是否有可重復(fù)利用的內(nèi)存塊
print("free_list 鏈表:", sys.getsizeof([]))
'''
執(zhí)行結(jié)果如下:
a 的內(nèi)存地址: 22203400
b 的內(nèi)存地址: 22201928
c 的內(nèi)存地址: 21904648
free_list 鏈表: 64
'''

 gc.collect() 可以強(qiáng)制進(jìn)行垃圾回收,但并不意味著內(nèi)存會(huì)立即被清空。Python 中的內(nèi)存管理是由解釋器和操作系統(tǒng)共同管理的,具體的內(nèi)存分配和回收時(shí)機(jī)也受到多種因素的影響,如垃圾回收器算法、系統(tǒng)內(nèi)存使用情況等。

在上面的示例中,當(dāng)我們刪除 a 對(duì)象并調(diào)用 gc.collect() 進(jìn)行垃圾回收時(shí),Python 解釋器會(huì)將 a 對(duì)象所占用的內(nèi)存標(biāo)記為可回收狀態(tài),并將其添加到垃圾回收器的待回收列表中。但是,這并不意味著內(nèi)存立即被回收,而是在垃圾回收器的下一輪回收時(shí)才會(huì)被清理。

另外,即使 a 對(duì)象所占用的內(nèi)存被回收了,也不一定意味著該內(nèi)存空間被立即釋放,因?yàn)?Python 中的內(nèi)存管理采用了一種延遲分配的機(jī)制,即只有當(dāng)需要申請(qǐng)更多內(nèi)存時(shí),Python 才會(huì)向操作系統(tǒng)請(qǐng)求分配新的內(nèi)存空間。因此,在上面的示例中,雖然 a 對(duì)象的內(nèi)存空間可能已經(jīng)被回收,但該內(nèi)存空間可能仍然被 Python 解釋器保留以供未來(lái)使用,從而避免不必要的內(nèi)存分配和釋放開(kāi)銷(xiāo)。

需要注意的是,即使 abc 三個(gè)對(duì)象的內(nèi)存地址不重復(fù),也并不意味著它們占用的內(nèi)存空間不會(huì)重疊。這是因?yàn)椋琍ython 中的內(nèi)存管理方式是以對(duì)象為單位進(jìn)行分配和管理的,每個(gè)對(duì)象占用的內(nèi)存空間可能是不連續(xù)的,因此不同對(duì)象的內(nèi)存空間可能會(huì)部分重疊。

讀到這里,這篇“Python3中延時(shí)變量與free_list鏈表的區(qū)別有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱(chēng):Python3中延時(shí)變量與free_list鏈表的區(qū)別有哪些
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article36/jhjpsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)小程序開(kāi)發(fā)網(wǎng)站排名營(yíng)銷(xiāo)型網(wǎng)站建設(shè)App開(kāi)發(fā)網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)