新聞中心
引言

成都創(chuàng)新互聯(lián)公司是專業(yè)的湖州網(wǎng)站建設(shè)公司,湖州接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行湖州網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
涉及并發(fā)的場(chǎng)景,大家想到使用多線程或多進(jìn)程解決并發(fā)問(wèn)題;
一般情況下,解決多并發(fā)場(chǎng)景問(wèn)題,多數(shù)語(yǔ)言采用多線程編程模式(線程是輕量級(jí)的進(jìn)程,共用一份進(jìn)程空間)。
也同樣適用于Python多并發(fā)處理嗎?
答:不是的,針對(duì)并發(fā)處理,Python多線程和多進(jìn)程是有很大差異的!
Python多線程和多進(jìn)程差異
Python多線程不能使用CPU多核資源,即同一時(shí)刻,只有一個(gè)線程使用CPU資源,所以使用Python多線程不能算是并發(fā)。
如果想要充分利用CPU多核資源,做到多并發(fā),這就需要Python多進(jìn)程的了!
也就是說(shuō):只有Python多進(jìn)程才能利用CPU多核資源,做到真正的多并發(fā)!
Python多線程和多進(jìn)程應(yīng)用場(chǎng)景
既然Python多線程不能并發(fā),那存在還有什么意義呢?
其實(shí)Python多線程和多進(jìn)程有自己的應(yīng)用場(chǎng)景:
- Python多線程適用于I/O密集型場(chǎng)景,如解決網(wǎng)絡(luò)IO、磁盤(pán)IO阻塞問(wèn)題,例如文件讀寫(xiě)、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)?
- 而Python多進(jìn)程更適用于計(jì)算密集型場(chǎng)景,多并發(fā),大量計(jì)算任務(wù)等。
注意:Python多線程和多進(jìn)程在平時(shí)開(kāi)發(fā)過(guò)程中,需要注意使用,如果使用Python多線程方式處理計(jì)算密集型任務(wù),它比實(shí)際單進(jìn)程處理性能還要慢!所以要注意,看場(chǎng)景類型。
再談Python多線程,全局解釋器鎖(GIL)
為什么Python多線程不能使用CPU多核資源?
為什么Python多線程在同一時(shí)刻,只有一個(gè)線程使用CPU資源?
正是因?yàn)镻ython有一個(gè)全局解釋器鎖(GIL,全稱Global Interpreter Lock),它使得Python多線程無(wú)法使用CPU多核資源,保證同一時(shí)刻只有一個(gè)線程在使用CPU資源;當(dāng)出現(xiàn)IO阻塞時(shí),解鎖,釋放CPU資源,其他線程才能申請(qǐng)到鎖,使用CPU資源。
Python并發(fā)編程
Python多進(jìn)程編程使用的模塊庫(kù):multiprocessing模塊,是Python內(nèi)置的多進(jìn)程處理庫(kù),使用與線程庫(kù)threading.Thread類似。
Python多線程編程使用的模塊庫(kù):
- thread模塊 Python內(nèi)置,比較底層,不推薦使用
- threading模塊 Python內(nèi)置
- multiprocessing.dummy模塊 Python內(nèi)置
補(bǔ)充:
multiprocessing模塊 和 multiprocessing.dummy模塊
兩者的區(qū)別在于:前者是多進(jìn)程,后者是多線程;但是他們編程接口完全一致;
所以很方便的將代碼在多線程和多進(jìn)程進(jìn)行切換!
由于篇幅有限,暫不介紹編程模塊具體使用,以后會(huì)開(kāi)專題補(bǔ)上!
之前整理的Python多線程和多進(jìn)程思維導(dǎo)圖供大家參考:
Python多進(jìn)程編程
Python多線程編程
當(dāng)前標(biāo)題:你真的了解Python嗎?什么場(chǎng)景使用多線程,什么場(chǎng)景使用多進(jìn)程?
當(dāng)前鏈接:http://www.dlmjj.cn/article/djegigc.html


咨詢
建站咨詢
