python中的多執行緒是假的多執行緒

2021-09-20 04:07:51 字數 534 閱讀 4594

python中的多執行緒是假的多執行緒?

為什麼這麼說,我們先明確乙個概念,全域性直譯器鎖(gil)global interpreter lock

python**的執行由python虛擬機器(直譯器)來控制,同時只有乙個執行緒在執行

對python虛擬機器的訪問由全域性直譯器鎖(gil)來控制,

正是這個鎖能保證同時只有乙個執行緒在執行。

在多執行緒環境中,python虛擬機器按照以下方式執行。

1.設定gil。

2.切換到乙個執行緒去執行。

3.執行。

4.把執行緒設定為睡眠狀態。

5.解鎖gil。

6.再次重複以上步驟。

比方我有乙個4核的cpu,那麼這樣一來,在單位時間內每個核只能跑乙個執行緒,然後時間片輪轉切換。

但是python不一樣,它不管你有幾個核,單位時間多個核只能跑乙個執行緒,然後時間片輪轉。

執行一段時間後讓出,多執行緒在python中只能交替執,100核只能用到1個核

例如,下面的**4核cpu只會用乙個核,大概占用25%的cpu使用率。

python中多執行緒程式設計 Python的多執行緒程式設計

提到多執行緒,很多人就會望而卻步,本文將由淺入深地帶你攻克python多執行緒程式設計,並防止你跳入深坑,首先看一段簡單的 1 from time importctime,sleep2 defplay video video 3 for i in range 2 4 print i am playi...

Python 的多執行緒是雞肋?

唉,還沒畢業就受到甲方的支配,等以後進了公司可咋整啊。小白嘴裡這麼吐槽,但心理上還是不敢怠慢,只能戀戀不捨地關掉眼前的遊戲,開啟了 python 思考了起來。現在的程式是單執行緒的,那就用多執行緒模型來優化吧,嘿嘿,我太機智了!小白打心底感謝前段時間裡學習到的執行緒的知識。python 裡好像是th...

python中的多執行緒

python中的多執行緒是假的多執行緒!為什麼這麼說,我們先明確乙個概念,全域性直譯器鎖 gil global interpreter lock python 的執行由python虛擬機器 直譯器 來控制,同時只有乙個執行緒在執行 對python虛擬機器的訪問由全域性直譯器鎖 gil 來控制,正是這...