Python 多執行緒效率不高嗎?

時間 2021-06-02 15:52:05

1樓:小強很忙忙

python受到GIL保護,在同一時刻,只有一條執行緒可以向前執行。原因:python的標準實現是cpython,在執行python程式時為了防止cpython受到先佔式多執行緒切換,破壞直譯器的狀態,所以加上GIL(全域性鎖直譯器)來保持位元組碼直譯器的協調性。

之所以支援多執行緒:1.借助多執行緒,以看似平行方式執行(比如並行處理任務切換.

)2.處理阻塞時I/O操作推薦一本書有更詳細的解釋

2樓:laiyonghao

開了200個執行緒,每個執行緒傳送乙個包後結束。

=========

換個姿勢黑Python好嗎?比如說for迴圈比C語言慢幾萬倍什麼的。

3樓:

不同執行緒同時訪問資源時,需要使用保護機制,Python中使用GIL(直譯器全域性鎖)。直觀上,這是乙個加在直譯器上的全域性(從直譯器的角度看)鎖。這意味著對於任何Python程式,不管有多少的處理器,任何時候都總是只有乙個執行緒在執行。

所以,如果沒有IO操作,python中的多執行緒比單執行緒效率還低。

可以看這個 Python 最難的問題

4樓:Moore

Python由於有全鎖局的存在(同一時間只能有乙個執行緒執行),並不能利用多核優勢。所以,如果你的多執行緒程序是CPU密集型的,那多執行緒並不能帶來效率上的提公升,相反還可能會因為執行緒的頻繁切換,導致效率下降;如果是IO密集型,多執行緒程序可以利用IO阻塞等待時的空閒時間執行其他執行緒,提公升效率。

python多執行緒爬蟲設計?

深海淺港少女與夢 使用多執行緒是因為get頁面所需時間非常長,是後面步驟的幾十上百倍,所以,後面的步驟用不用多執行緒都不是問題。另外 node crawler寫爬蟲好寫不累,一口氣寫5個不喘氣,誰用誰知道! 笑虎 假設乙個爬蟲步驟分為 獲取,解析,儲存。那麼在設計多執行緒爬蟲時應該是乙個執行緒完成這...

為什麼有人說 Python 的多執行緒是雞肋呢?

確實雞肋,主要原因是因為GIL。但執行緒依然很有用 很多人提到協程,如果沒有ThreadPoolExecutor很多任務只能阻塞eventloop。編寫c模組的時候,還可以釋放GIL,跑滿多核也不難。這導致對很多科學計算的任務其實用threadpool都能突破GIL限制。 CPython直譯器並不是...

為什麼多執行緒Python程式無法充分利用多個CPU核心帶來的優勢?

德雲社區 這是個基礎問題,不值一提,說不能充分利用多個CPU核心帶來的優勢,那只是網上說的 用用 數字 IDE 帶高速模式的小程式,感覺一下,是不是能充分利用多 CPU 核心 主要是 Python 想直接利用多 CPU 核心有點難度,特別是對於初學者 臉雲 其實看實現,CPython實現是有 GIL...