3-2節(jié)例子的疑問
3-2節(jié)的例子,老師用來說明多線程的副作用,主要是因?yàn)槔邮怯嬎忝芗偷模绻荌O密集型的例子,應(yīng)該是多線程的耗時更短吧?因?yàn)镮O密集型,當(dāng)前線程遇到阻塞可以轉(zhuǎn)去執(zhí)行別的線程,交給系統(tǒng)的去處理就行,但是計算密集型的,本身是占用CPU資源的,也就失去了多線程的作用,反而因?yàn)闀r間片的切換耗時導(dǎo)致效率更低。請問我的理解對嗎?
3-2節(jié)的例子,老師用來說明多線程的副作用,主要是因?yàn)槔邮怯嬎忝芗偷模绻荌O密集型的例子,應(yīng)該是多線程的耗時更短吧?因?yàn)镮O密集型,當(dāng)前線程遇到阻塞可以轉(zhuǎn)去執(zhí)行別的線程,交給系統(tǒng)的去處理就行,但是計算密集型的,本身是占用CPU資源的,也就失去了多線程的作用,反而因?yàn)闀r間片的切換耗時導(dǎo)致效率更低。請問我的理解對嗎?
2020-11-09
舉報
2021-01-23
IO密集型,確實(shí)多線程耗時更短
CPU核數(shù)可以理解為里面有幾個工人,單核里面只有一個,多核有n個,對于n個工時量的項(xiàng)目,單核需要n小時完成,而多核有n個工人同時干,只需要一個小時就能完成;
但python中由于GIL的存在,同時只能有一個線程運(yùn)行。就好多核里面的n個工人,但同時只能有1個人工作,其他只能劃劃水,多核的優(yōu)勢完全被浪費(fèi)掉了。而且還多了幾個工人去搶著工作耗費(fèi)的無意義時間,也就是你所說的時間片的切換耗時,所以導(dǎo)致耗費(fèi)時間比單線程要更多。