引言涉及并發(fā)的場景,大家想到使用多線程或多進(jìn)程解決并發(fā)問題; 一般情況下,解決多并發(fā)場景問題,多數(shù)語言采用多線程編程模式(線程是輕量級的進(jìn)程,共用一份進(jìn)程空間)。 也同樣適用于Python多并發(fā)處理嗎? 答:不是的,針對并發(fā)處理,Python多線程和多進(jìn)程是有很大差異的! Python多線程和多進(jìn)程差異Python多線程不能使用CPU多核資源,即同一時刻,只有一個線程使用CPU資源,所以使用Python多線程不能算是并發(fā)。 如果想要充分利用CPU多核資源,做到多并發(fā),這就需要Python多進(jìn)程的了! 也就是說:只有Python多進(jìn)程才能利用CPU多核資源,做到真正的多并發(fā)! Python多線程和多進(jìn)程應(yīng)用場景既然Python多線程不能并發(fā),那存在還有什么意義呢? 其實Python多線程和多進(jìn)程有自己的應(yīng)用場景:
再談Python多線程,全局解釋器鎖(GIL)為什么Python多線程不能使用CPU多核資源? 為什么Python多線程在同一時刻,只有一個線程使用CPU資源? 正是因為Python有一個全局解釋器鎖(GIL,全稱Global Interpreter Lock),它使得Python多線程無法使用CPU多核資源,保證同一時刻只有一個線程在使用CPU資源;當(dāng)出現(xiàn)IO阻塞時,解鎖,釋放CPU資源,其他線程才能申請到鎖,使用CPU資源。 Python并發(fā)編程Python多進(jìn)程編程使用的模塊庫:multiprocessing模塊,是Python內(nèi)置的多進(jìn)程處理庫,使用與線程庫threading.Thread類似。 Python多線程編程使用的模塊庫:
由于篇幅有限,暫不介紹編程模塊具體使用,以后會開專題補上! 之前整理的Python多線程和多進(jìn)程思維導(dǎo)圖供大家參考:
![]()
![]() 最后接下來會有更加精彩的內(nèi)容,不想錯過的話,可以關(guān)注我,第一時間獲取更新! 最后,投幣收藏轉(zhuǎn)發(fā)來一波,我們下期不見不散~ |
|