日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python字典get计数_Python内部是如何存储GC引用变量的计数的?

發(fā)布時(shí)間:2025/3/20 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python字典get计数_Python内部是如何存储GC引用变量的计数的? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這段時(shí)間一直在想一個(gè)問題,為什么Python有了GIL依然還要對(duì)變量加鎖。Google的過程中查看一些東西,有了新的困惑。

一個(gè)說法說Python內(nèi)部保存了一個(gè)用戶空間和一個(gè)內(nèi)核空間。用戶空間通常就是我們自己編寫程序的對(duì)象(變量)。而GIL控制的就是內(nèi)核空間,內(nèi)核空間保存了比如GC對(duì)于變量的計(jì)數(shù),而內(nèi)核空間是由GIL控制的。

引用知乎的一個(gè)回答請(qǐng)問下面說的這段話的意思中的維護(hù)的這個(gè)字典是不是就是上面所說的內(nèi)核空間?難道是globals()查出的字典,應(yīng)該不是,字典中好像找不到變量的引用?

因?yàn)? 有了GIL, 提供并發(fā)就變得很容易. 解釋器只要計(jì)算每個(gè)線程的運(yùn)行時(shí)間就好了,時(shí)間一到, 將這個(gè)線程凍結(jié), 內(nèi)存管理很簡單.等等, 你還是沒解釋, 如果我已經(jīng)給線程上了鎖, 為什么還是要被GIL限制?一向符合人類直覺的Python, 有個(gè)很反直覺的機(jī)制.Py的變量a其實(shí)不是C系編譯語言的變量.Python維護(hù)著一個(gè)字典, 儲(chǔ)存著a和對(duì)應(yīng)數(shù)值的指針.用某黑Python的大牛的話說, Python企圖用字典裝下世界..如果變成真多線程對(duì)于這個(gè)字典的維護(hù)將會(huì)很復(fù)雜.多個(gè)線程真正同時(shí)操作一個(gè)字典, Python引以為傲的字典性能, 估計(jì)就沒那么強(qiáng)了.就是說, Python字典的性能強(qiáng)大,是建立在線程不安全的基礎(chǔ)上.而字典在Python中的位置又是如此重要, 一個(gè)緩慢的字典, 會(huì)嚴(yán)重拖慢Python的解釋速度.多線程操作多個(gè)獨(dú)立字典. 那樣還是要同步.那為什么不采用多進(jìn)程呢? 這就社區(qū)主流的看法.雖然理論上線程成本更低, 但是那樣代碼就改成面目全非了..

ps: 對(duì)于上面這段引用,拜托大神解釋一下,感覺作者不是說的那么直接!

我的困惑

Python內(nèi)部是如何存儲(chǔ)GC引用變量的計(jì)數(shù)的,是裝到一個(gè)dict,而且這個(gè)dict是存放到kernel space而不是user space嗎?

Python維護(hù)著一個(gè)字典, 儲(chǔ)存著a和對(duì)應(yīng)數(shù)值的指針.用某黑Python的大牛的話說, Python企圖用字典裝下世界。這句話怎么理解?

總結(jié)

以上是生活随笔為你收集整理的python字典get计数_Python内部是如何存储GC引用变量的计数的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。