真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python爬蟲(chóng)中多線(xiàn)程和多進(jìn)程的示例分析

小編給大家分享一下python爬蟲(chóng)中多線(xiàn)程和多進(jìn)程的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

在淳安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),淳安網(wǎng)站建設(shè)費(fèi)用合理。

python是什么意思

Python是一種跨平臺(tái)的、具有解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言,其最初的設(shè)計(jì)是用于編寫(xiě)自動(dòng)化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開(kāi)發(fā)獨(dú)立的項(xiàng)目和大型項(xiàng)目。

一、進(jìn)程/線(xiàn)程

表示可以同時(shí)執(zhí)行多個(gè)任務(wù),進(jìn)程和線(xiàn)程的調(diào)度是由操作系統(tǒng)自動(dòng)完成。

1、進(jìn)程:是線(xiàn)程的集合,是由一個(gè)或多個(gè)線(xiàn)程構(gòu)成的。

每個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)存空間,不同進(jìn)程之間的內(nèi)存空間不共享。

進(jìn)程之間的通信有操作系統(tǒng)傳遞,導(dǎo)致通訊效率低,切換開(kāi)銷(xiāo)大。

2、線(xiàn)程:是操作系統(tǒng)進(jìn)行運(yùn)算調(diào)度的最小單位,是進(jìn)程中的一個(gè)最小運(yùn)行單元。

一個(gè)個(gè)進(jìn)程可以有多個(gè)線(xiàn)程,所有線(xiàn)程共享進(jìn)程的內(nèi)存空間,通訊效率高,切換開(kāi)銷(xiāo)小。

二、多進(jìn)程/多線(xiàn)程

1、多進(jìn)程

進(jìn)程的調(diào)度:當(dāng)有多個(gè)進(jìn)程并行執(zhí)行時(shí),每個(gè)進(jìn)程得到的時(shí)間片的時(shí)間不一樣,哪個(gè)進(jìn)程接受哪個(gè)請(qǐng)求以及執(zhí)行完成的時(shí)間都是不定的,所以不處理的話(huà)會(huì)輸出亂序。

python中多進(jìn)程用到的模塊是multiprocessing(python就是模塊多…一些基本的,常用的都已經(jīng)有模塊了……),multiprocessing[下面簡(jiǎn)稱(chēng)mp]的很大的一部分與threading模塊使用同一套API

進(jìn)程池:Pool【感覺(jué)已經(jīng)是mp的高級(jí)用法了】,可以提供指定數(shù)量的進(jìn)程供用戶(hù)調(diào)用,每當(dāng)有請(qǐng)求提交到Pool的時(shí)候,如果進(jìn)程池還沒(méi)有滿(mǎn),就會(huì)創(chuàng)建一個(gè)新的進(jìn)程來(lái)執(zhí)行請(qǐng)求,如果進(jìn)程滿(mǎn)了,則請(qǐng)求將會(huì)被告知先等待,直至進(jìn)程池中有進(jìn)程結(jié)束才會(huì)放入,以執(zhí)行請(qǐng)求。

簡(jiǎn)單來(lái)說(shuō),就是進(jìn)程池可創(chuàng)建多個(gè)進(jìn)程,這些進(jìn)程就像是隨時(shí)待命的士兵,準(zhǔn)備執(zhí)行任務(wù)。

2、多線(xiàn)程

不依賴(lài)CPU的操作我們是可以通過(guò)使用多線(xiàn)程來(lái)大大提高程序的效率。

Python一般通過(guò)threading庫(kù)來(lái)實(shí)現(xiàn)多線(xiàn)程。threading庫(kù)是對(duì)thread庫(kù)進(jìn)行包裝后的產(chǎn)物。

并發(fā)(concurrency)

指同一時(shí)刻只能有一條指令執(zhí)行,但多個(gè)線(xiàn)程的對(duì)應(yīng)的指令被快速輪換地執(zhí)行,宏觀上看起來(lái)多個(gè)線(xiàn)程在同時(shí)運(yùn)行,但微觀上只是這個(gè)處理器在連續(xù)不斷地、在多個(gè)線(xiàn)程之間切換和執(zhí)行。

并行(parallel)

指同一時(shí)刻有多條指令在多個(gè)處理器上同時(shí)執(zhí)行,并行必須要依賴(lài)于多個(gè)處理器,不論宏觀上還是微觀上,多個(gè)線(xiàn)程都是在同一時(shí)刻一起執(zhí)行的。

GIL 全局解釋器鎖:線(xiàn)程的執(zhí)行權(quán)限,在Python的進(jìn)程里只有一個(gè)GIL。一個(gè)線(xiàn)程需要執(zhí)行任務(wù),必須獲取GIL。

好處:直接杜絕了多個(gè)線(xiàn)程訪(fǎng)問(wèn)內(nèi)存空間的安全問(wèn)題。

壞處:Python的多線(xiàn)程不是真正多線(xiàn)程,不能充分利用多核CPU的資源。但是,在I/O阻塞的時(shí)候,解釋器會(huì)釋放GIL。

線(xiàn)程實(shí)現(xiàn)

1)通過(guò)繼承threading當(dāng)中的Thread類(lèi)

2)然后再init里調(diào)用Thread的init方法(或者用super調(diào)用超類(lèi)的構(gòu)造函數(shù)),就可以完成對(duì)一個(gè)線(xiàn)程的初始化創(chuàng)建工作。

3)然后我們可以通過(guò)重寫(xiě)類(lèi)的run方法來(lái)定義這個(gè)線(xiàn)程的要做的事。

4)創(chuàng)建一個(gè)這個(gè)類(lèi)的對(duì)象。

5)然后調(diào)用這個(gè)對(duì)象的start方法就讓這個(gè)線(xiàn)程開(kāi)始工作了。

6)調(diào)用對(duì)象的join方法等待這個(gè)線(xiàn)程結(jié)束工作

三、總結(jié)

1、多進(jìn)程:

密集CPU任務(wù),需要充分使用多核CPU資源(服務(wù)器,大量的并行計(jì)算)的時(shí)候,用多進(jìn)程。

想要提高執(zhí)行效率,大部分開(kāi)發(fā)者是通過(guò)編寫(xiě)多進(jìn)程來(lái)提高運(yùn)行效率,使用multiprocessing進(jìn)行并行編程。

缺陷:

每個(gè)進(jìn)程都會(huì)有自己的內(nèi)存,數(shù)據(jù)多的話(huà),內(nèi)存會(huì)吃不消。

多個(gè)進(jìn)程之間通信成本高,切換開(kāi)銷(xiāo)大。

2、多線(xiàn)程:

密集I/O任務(wù)(網(wǎng)絡(luò)I/O,磁盤(pán)I/O,數(shù)據(jù)庫(kù)I/O)使用多線(xiàn)程合適。

多線(xiàn)程是為了同步完成多項(xiàng)任務(wù),通過(guò)提高資源使用效率來(lái)提高系統(tǒng)的效率。線(xiàn)程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。

缺陷:

在編寫(xiě)多線(xiàn)程代碼時(shí)候,要注意死鎖的問(wèn)題、阻塞的問(wèn)題、以及需要注意多線(xiàn)程之間通信的問(wèn)題(避免多個(gè)線(xiàn)程執(zhí)行同一個(gè)任務(wù))。

同一個(gè)時(shí)間切片只能運(yùn)行一個(gè)線(xiàn)程,不能做到高并行,但是可以做到高并發(fā)。

看完了這篇文章,相信你對(duì)“python爬蟲(chóng)中多線(xiàn)程和多進(jìn)程的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站標(biāo)題:python爬蟲(chóng)中多線(xiàn)程和多進(jìn)程的示例分析
鏈接地址:http://weahome.cn/article/pijcpd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部