中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python爬蟲中多線程和多進程的示例分析

發布時間:2021-05-08 09:30:45 來源:億速云 閱讀:201 作者:小新 欄目:編程語言

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

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

一、進程/線程

表示可以同時執行多個任務,進程和線程的調度是由操作系統自動完成。

1、進程:是線程的集合,是由一個或多個線程構成的。

每個進程都有自己獨立的內存空間,不同進程之間的內存空間不共享。

進程之間的通信有操作系統傳遞,導致通訊效率低,切換開銷大。

2、線程:是操作系統進行運算調度的最小單位,是進程中的一個最小運行單元。

一個個進程可以有多個線程,所有線程共享進程的內存空間,通訊效率高,切換開銷小。

二、多進程/多線程

1、多進程

進程的調度:當有多個進程并行執行時,每個進程得到的時間片的時間不一樣,哪個進程接受哪個請求以及執行完成的時間都是不定的,所以不處理的話會輸出亂序。

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

進程池:Pool【感覺已經是mp的高級用法了】,可以提供指定數量的進程供用戶調用,每當有請求提交到Pool的時候,如果進程池還沒有滿,就會創建一個新的進程來執行請求,如果進程滿了,則請求將會被告知先等待,直至進程池中有進程結束才會放入,以執行請求。

簡單來說,就是進程池可創建多個進程,這些進程就像是隨時待命的士兵,準備執行任務。

2、多線程

不依賴CPU的操作我們是可以通過使用多線程來大大提高程序的效率。

Python一般通過threading庫來實現多線程。threading庫是對thread庫進行包裝后的產物。

并發(concurrency)

指同一時刻只能有一條指令執行,但多個線程的對應的指令被快速輪換地執行,宏觀上看起來多個線程在同時運行,但微觀上只是這個處理器在連續不斷地、在多個線程之間切換和執行。

并行(parallel)

指同一時刻有多條指令在多個處理器上同時執行,并行必須要依賴于多個處理器,不論宏觀上還是微觀上,多個線程都是在同一時刻一起執行的。

GIL 全局解釋器鎖:線程的執行權限,在Python的進程里只有一個GIL。一個線程需要執行任務,必須獲取GIL。

好處:直接杜絕了多個線程訪問內存空間的安全問題。

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

線程實現

1)通過繼承threading當中的Thread類

2)然后再init里調用Thread的init方法(或者用super調用超類的構造函數),就可以完成對一個線程的初始化創建工作。

3)然后我們可以通過重寫類的run方法來定義這個線程的要做的事。

4)創建一個這個類的對象。

5)然后調用這個對象的start方法就讓這個線程開始工作了。

6)調用對象的join方法等待這個線程結束工作

三、總結

1、多進程:

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

想要提高執行效率,大部分開發者是通過編寫多進程來提高運行效率,使用multiprocessing進行并行編程。

缺陷:

每個進程都會有自己的內存,數據多的話,內存會吃不消。

多個進程之間通信成本高,切換開銷大。

2、多線程:

密集I/O任務(網絡I/O,磁盤I/O,數據庫I/O)使用多線程合適。

多線程是為了同步完成多項任務,通過提高資源使用效率來提高系統的效率。線程是在同一時間需要完成多項任務的時候實現的。

缺陷:

在編寫多線程代碼時候,要注意死鎖的問題、阻塞的問題、以及需要注意多線程之間通信的問題(避免多個線程執行同一個任務)。

同一個時間切片只能運行一個線程,不能做到高并行,但是可以做到高并發。

看完了這篇文章,相信你對“python爬蟲中多線程和多進程的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新干县| 两当县| 和林格尔县| 宁安市| 上高县| 武山县| 阳高县| 卓资县| 莱州市| 广水市| 揭西县| 龙山县| 阳朔县| 鹿邑县| 文安县| 贡嘎县| 东至县| 涿州市| 岐山县| 江北区| 静宁县| 镇平县| 延川县| 安达市| 西畴县| 虞城县| 轮台县| 广德县| 雷波县| 格尔木市| 玉山县| 丘北县| 诸城市| 时尚| 怀宁县| 恩平市| 长顺县| 丰都县| 巨鹿县| 河北区| 循化|