亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

金华市| 股票| 榕江县| 武平县| 蒙城县| 临桂县| 砚山县| 梓潼县| 蕉岭县| 桑植县| 界首市| 肇源县| 治多县| 陇川县| 永德县| 安福县| 民勤县| 葫芦岛市| 灯塔市| 达州市| 白城市| 连山| 方城县| 贵州省| 海原县| 舒城县| 北碚区| 西宁市| 太保市| 邢台县| 汪清县| 阿巴嘎旗| 伊川县| 青州市| 湘潭市| 恩施市| 永福县| 安溪县| 鄂托克前旗| 福清市| 沈阳市|