卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

python如何停止子線程 為什么有人說Python的多線程是雞肋呢?

為什么有人說Python的多線程是雞肋呢?Gil lock限制了進(jìn)程中的不同線程在同一時(shí)間只能占用一個(gè)CPU。可以看出,當(dāng)使用多線程處理計(jì)算密集型任務(wù)時(shí),Python中的多個(gè)線程需要相互等待以獲得CP

為什么有人說Python的多線程是雞肋呢?

Gil lock限制了進(jìn)程中的不同線程在同一時(shí)間只能占用一個(gè)CPU??梢钥闯?,當(dāng)使用多線程處理計(jì)算密集型任務(wù)時(shí),Python中的多個(gè)線程需要相互等待以獲得CPU資源。在這個(gè)時(shí)候,多線程不能并行,我們真的不具備預(yù)期的多線程能力。

但是,如果執(zhí)行的是Io密集型任務(wù),多個(gè)線程之間沒有太多CPU資源爭用,更多的是每個(gè)線程都在進(jìn)行Io傳輸和等待,此時(shí),多線程的能力還是可以發(fā)揮出來的。

所以我們不能簡單地說Python的多線程是雞肋,但是它的設(shè)計(jì)限制了它的應(yīng)用場景。

線程進(jìn)入阻塞時(shí),線程會(huì)不會(huì)讓出CPU?

這取決于上下文切換機(jī)制。通常,WindowsLinuxIOS會(huì)給每個(gè)線程指定的執(zhí)行時(shí)間。如果時(shí)間到了,就會(huì)出現(xiàn)計(jì)時(shí)器中斷信號(hào),線程將被動(dòng)地失去使用CPU的權(quán)利。然而,一些簡單的嵌入式系統(tǒng)沒有這種機(jī)制。上下文切換通常要求線程放棄CPU的使用權(quán),并將其交給內(nèi)核。如果當(dāng)前線程此時(shí)被阻塞,將導(dǎo)致死循環(huán)。在這個(gè)時(shí)候,我們應(yīng)該主動(dòng)調(diào)用函數(shù),比如重新調(diào)度或者向內(nèi)核發(fā)送信號(hào)。當(dāng)然,帶定時(shí)器的系統(tǒng)也可以調(diào)用這些函數(shù),要求當(dāng)前線程提前放棄CPU資源,避免在循環(huán)中浪費(fèi)等待時(shí)間。