最新回答 / 慕俠1360162
IO密集型,確實(shí)多線程耗時(shí)更短CPU核數(shù)可以理解為里面有幾個(gè)工人,單核里面只有一個(gè),多核有n個(gè),對(duì)于n個(gè)工時(shí)量的項(xiàng)目,單核需要n小時(shí)完成,而多核有n個(gè)工人同時(shí)干,只需要一個(gè)小時(shí)就能完成;但python中由于GIL的存在,同時(shí)只能有一個(gè)線程運(yùn)行。就好多核里面的n個(gè)工人,但同時(shí)只能有1個(gè)人工作,其他只能劃劃水,多核的優(yōu)勢(shì)完全被浪費(fèi)掉了。而且還多了幾個(gè)工人去搶著工作耗費(fèi)的無意義時(shí)間,也就是你所說的時(shí)間片的切換耗時(shí),所以導(dǎo)致耗費(fèi)時(shí)間比單線程要更多。
最新回答 / qq_DgenerationX_1
不知道呀
最新回答 / 慕先生4398378
因?yàn)檫@"老師"有些地方講錯(cuò)了python用threading.Thread形式開出來的線程, 都活在同一個(gè)核上, 所以共用一個(gè)GIL而用multiprocessing.Process這樣開出來的進(jìn)程, 是互相獨(dú)立的(可以打印pid號(hào)發(fā)現(xiàn)), 每個(gè)進(jìn)程使用各自的GIL, 進(jìn)程間的GIL不相干.
2020-06-21