最近看書上寫的,python解釋器可以“運行”多個線程,但在任一時刻,只有一個線程在運行。
我不理解的是,既然任意時刻只有一個線程在運行,那為什么還是并發編程呢?這樣的話兩個線程運行的時間總和不還是兩個線程的運行時間相加?但是實際上又不是。
請大家幫忙解惑一下,謝謝。
2 回答
蕭十郎
TA貢獻1815條經驗 獲得超13個贊
多線程用途一般分為兩種,密集計算和密集IO請求。
密集計算,瓶頸在于cup給這個計算的時間片和cpu能跑多快上,這時候一般通過多核并行處理,以及增加該計算的CUP時間片來達到加速計算。這時候python的多線程沒什么卵用。反而會拖慢計算,因為進程的切換也是需要時間的。這部分時間就浪費了。
而IO計算。瓶頸在于你一個請求發送出去的等待時間,一般走internet的tcp請求怎么也要100毫秒,而單進程,時間就白白浪費在等待這個網絡傳輸時延上面了。而多進程通過一次發出多個請求來縮短等待時間,比如你有10個請求跑去每個請求網絡等待時間100ms處理10ms那么單線程需要1100ms,而多進程同時發出10個請求,基本算同時發出 都等待100ms然后處理雖說是多進程但是因為同時只有一個運行基本算100ms那么總共就200ms當你同時并發的連接熟練越多時候效率越高
添加回答
舉報
0/150
提交
取消
