回覆列表
-
1 # 滴逃逃
-
2 # IT資訊i
因為python的全域性直譯器鎖的機制,
導致python的多執行緒並不是真正的多執行緒,
效率上不僅不會比單執行緒快,反而可能更慢,
所以說是雞肋,要求速度好話,可以用多程序來實現
百度搜索圈T社群(www.aiquanti.com) 免費影片教程
-
3 # 上海網際網路架構師
這句話是片面的:
GIL鎖限制了一個程序內的不同執行緒在同一個時刻只能佔用一個CPU,由此可見,用多執行緒處理計算密集型的任務,python的多個執行緒需要互相等待獲取CPU資源,此時的多個執行緒並不能並行,確實沒有發揮我們預想中多執行緒的能力。
但是,如果執行的是IO密集型的任務,多個執行緒之間不存在太多的CPU資源的爭奪,更多的是各個執行緒在進行IO傳輸、等待,此時多執行緒的能力仍然能夠發揮出來。
所以不能簡單的說Python的多執行緒是雞肋,只是它的設計侷限了它的適用場景罷了。
Python多執行緒是不是雞肋,是,GIL那個東西再那裡擺著,就算在多核下面Python也是無法並行的,這個好理解嘛,就相當於做了個分時複用。
Python多執行緒有沒有用,有,你去爬圖片站的時候,用單程序單執行緒這種方式,程序很容易阻塞在獲取資料socket函式上,多執行緒可以緩解這種情況。你說解決沒有,要是每個請求都阻塞起了,那多執行緒也沒什麼用(當然,這種情況沒見過哈)。
Python的優勢就在於寫起來快,用起來方便。你要做計算密集型的,還想並行化的話,還是用C吧。