第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于python多進程、多線程的一些疑問

關(guān)于python多進程、多線程的一些疑問

莫回無 2018-07-02 12:13:06
當有2個cpu的時候,只有一個進程,該進程是否獨享2個cpu資源?2、線程是進程下面的,如果有兩個進程,分別獨享1個cpu,進程下有n個線程,那么理論上這種情況下的多線程是無法利用多核的優(yōu)勢的?所以要利用多核,只能有一個進程?3、python的GIL是每個進程一個還是整個只有唯一一個?4、既然有GIL,但是又說多線程對“IO密集型”任務(wù)有優(yōu)勢。我的理解是,任務(wù)的瓶頸在讀寫上,雖然多個線程間切換也需要cup資源,但是由于計算任務(wù)并不繁重,所以線程間切換很流暢(線程間切換比進程切換所消耗的cpu資源更少),所以比起多進程來多線程在“IO密集型”任務(wù)上比較有優(yōu)勢。不知道我的理解有沒有錯誤。請各位高手指點,謝謝大家~~
查看完整描述

2 回答

?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

  1. 進程和 CPU 沒有對應(yīng)關(guān)系。一個進程開兩個線程可以做到占用兩個 core。

  2. 進程和 CPU 沒有對應(yīng)關(guān)系,因此不存在獨享 1 個 CPU 的概念。你兩個進程各開兩個線程,可以占用 4 個 CPU。

  3. GIL 每個進程一個。

但是,由于 Python 中 GIL 的存在,Python 一個進程中每個時刻只能有一個線程真正在跑,因此要利用多核優(yōu)勢還得多進程。

  1. 多線程"對 IO 密集型有優(yōu)勢"這句話一般是相對于"計算密集型任務(wù)"而言的,這點自然不言而喻。至于用單進程或多進程跑 IO 密集型任務(wù),個人感覺差別不大,畢竟瓶頸在操作系統(tǒng)和硬件上。


查看完整回答
反對 回復(fù) 2018-07-06
?
30秒到達戰(zhàn)場

TA貢獻1828條經(jīng)驗 獲得超6個贊

  1. 是,只要你的進程有2+個線程,就能占滿坑;

  2. 不太清楚你對“獨享”的定義是什么。如果是強行設(shè)置處理器相關(guān)性,那無法利用多核的優(yōu)勢,但多線程本身的優(yōu)勢還是在的。要利用多核,不一定只能有一個進程,每個核一個進程也充分利用了呀;

  3. 每個進程一個;

  4. 沒有錯誤。開子進程,用新的GIL,代價是成本比較高,通信比較麻煩。開子線程,仍然受同一個GIL控制,但是成本比較低。反正GIL在IO的時候都會釋放,所以IO密集型沒必要為了新的GIL去付那么高的成本。

成本來自兩方面:切換成本和通信成本。

  • 切換成本:進程比線程高;

  • 通信成本:不同處理器比同處理器高。

我們實際操作中一般給每個核一個進程,然后讓每個進程管理自己的線程,就可以同時最小化兩個成本。


查看完整回答
反對 回復(fù) 2018-07-06
  • 2 回答
  • 0 關(guān)注
  • 296 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號