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

時間 2021-05-06 03:19:53

1樓:德雲社區

這是個基礎問題,不值一提,說不能充分利用多個CPU核心帶來的優勢,那只是網上說的

用用 "數字 IDE" 帶高速模式的小程式,感覺一下,是不是能充分利用多 CPU 核心

主要是 Python 想直接利用多 CPU 核心有點難度,特別是對於初學者

2樓:臉雲

其實看實現,CPython實現是有 GIL,但 Jython/IronPython 這些不那麼主流的並沒有 GIL。

GlobalInterpreterLock - Python Wiki

即使有 GIL,你要是用 FFI 建立系統執行緒,也是可以充分利用多核心的……

3樓:誰與爭鋒

博主感興趣就來看看這個

4樓:IcY

簡單理解gil是給python的虛擬機器上的一把鎖,某一時刻只能有乙個執行緒在使用虛擬機器執行位元組碼,就好像乙個漏斗,避免了出現問題,但也降低了效率,不管你朝里倒的瓶子口有多大(多執行緒),不管你接著的瓶子口有多大(多核cpu),總有那個漏斗在那限制你,所以這把gil讓多核cpu退化為單核,讓平行計算退化為序列計算。

python多執行緒爬蟲設計?

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

Python 多執行緒效率不高嗎?

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

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

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