最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python異步爬蟲多線程與線程池示例詳解

 更新時間:2021年09月29日 16:14:55   作者:小緣喵~  
這篇文章主要為大家介紹了Python異步爬蟲多線程與線程池示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

背景

當(dāng)對多個url發(fā)送請求時,只有請求完第一個url才會接著請求第二個url(requests是一個阻塞的操作),存在等待的時間,這樣效率是很低的。那我們能不能在發(fā)送請求等待的時候,為其單獨開啟進(jìn)程或者線程,繼續(xù)請求下一個url,執(zhí)行并行請求

異步爬蟲方式

多線程,多進(jìn)程(不建議)

好處:可以為相關(guān)阻塞的操作單獨開啟線程或者進(jìn)程,阻塞操作就可以異步會執(zhí)行

弊端:不能無限制開啟多線程或者多進(jìn)程(需要頻繁的創(chuàng)建或者銷毀進(jìn)程,線程)

線程池,進(jìn)程池(適當(dāng)使用)

好處:可以降低系統(tǒng)對進(jìn)程或線程創(chuàng)建和銷毀的頻率,從而很好的而降低系統(tǒng)的開銷

弊端:線程或進(jìn)程池中的數(shù)量是有上限的

單線程+異步協(xié)程(推薦)

多線程

正常運行如下的代碼,需要花費8秒鐘的時間,因為sleep是一個阻塞的操作,在等待的時候不會執(zhí)行別的操作,極大地降低了效率

from time import sleep
import time
start = time.time()
def xx(str):
    print('正在下載:', str)
    sleep(2)
str = ['xiaozi', 'aa', 'bb', 'cc']
for i in str:
    xx(i)
end = time.time()
print('程序運行時間:',end-start)

使用多線程后

from threading import Thread
from time import sleep
import time
start = time.time()
def xx(str):
        print('正在下載:',str)
        sleep(2)
str =  ['xiaozi','aa','bb','cc']
def main():
    for s in str:
        #開啟線程,target=函數(shù)名,args=(xx,) ,xx為向函數(shù)傳遞的參數(shù),必須為元組類型,所以后面需要加,
        t = Thread(target=xx,args=(s,))
        t.start()
if __name__ == '__main__':
    main()
    end = time.time()
    print('程序運行時間:',end-start)

但是我們發(fā)現(xiàn)下面的運行順序貌似有點亂的

線程池

對上面的改為線程池后運行

#倒入線程池模塊對應(yīng)的類
from multiprocessing.dummy import Pool
from time import sleep
import time
start = time.time()
def xx(str):
        print('正在下載:',str)
        sleep(2)
str =  ['xiaozi','aa','bb','cc']
#實例化一個線程池對象,線程池中開辟四個線程對象,并行4個線程處理四個阻塞操作
pool = Pool(4)
#將列表中的每一個列表元素(可迭代對象)傳遞給xx函數(shù)(發(fā)生阻塞的操作)進(jìn)行處理
#map方法會有一個返回值為函數(shù)的返回值(一個列表),但是這里沒有返回值所以不考慮
#調(diào)用map方法
pool.map(xx,str)
end = time.time()
print('程序運行時間:',end-start)

以上就是Python異步爬蟲多線程與線程池示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python異步多線程與線程池的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    這篇文章主要介紹了python 6.7 編寫一個名為printTable()的函數(shù) 表格打印,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換

    Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換

    這篇文章主要介紹了Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • python使用數(shù)字與字符串方法技巧

    python使用數(shù)字與字符串方法技巧

    這篇文章主要介紹了python使用數(shù)字與字符串方法技巧,文章內(nèi)容介紹詳細(xì)具有一的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • djang常用查詢SQL語句的使用代碼

    djang常用查詢SQL語句的使用代碼

    這篇文章主要介紹了djang常用查詢SQL語句的使用代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Django 權(quán)限認(rèn)證(根據(jù)不同的用戶,設(shè)置不同的顯示和訪問權(quán)限)

    Django 權(quán)限認(rèn)證(根據(jù)不同的用戶,設(shè)置不同的顯示和訪問權(quán)限)

    這篇文章主要介紹了Django 權(quán)限認(rèn)證(根據(jù)不同的用戶,設(shè)置不同的顯示和訪問權(quán)限),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中對字典的幾個處理方法分享

    Python中對字典的幾個處理方法分享

    這篇文章主要介紹了Python中對字典的幾個處理方法分享,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    Python面向?qū)ο蟮膬?nèi)置方法梳理講解

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對象”來實現(xiàn),所以,面向?qū)ο缶幊唐鋵嵕褪菍?nbsp;“類”和“對象” 的使用,今天給大家介紹下python 面向?qū)ο箝_發(fā)及基本特征,感興趣的朋友一起看看吧
    2022-10-10
  • python利用PyQt5設(shè)計鼠標(biāo)顯示形狀

    python利用PyQt5設(shè)計鼠標(biāo)顯示形狀

    不知道大家有沒有發(fā)現(xiàn),我們在網(wǎng)頁移動鼠標(biāo)時,不同的網(wǎng)頁會有不同的鼠標(biāo)移動特效,通過移動鼠標(biāo),會形成類似蜘蛛網(wǎng)等等的特效,本文將用PyQt5實現(xiàn)這一特效,需要的可以參考一下
    2024-07-07
  • 關(guān)于PySnooper 永遠(yuǎn)不要使用print進(jìn)行調(diào)試的問題

    關(guān)于PySnooper 永遠(yuǎn)不要使用print進(jìn)行調(diào)試的問題

    這篇文章主要介紹了關(guān)于PySnooper 永遠(yuǎn)不要使用print進(jìn)行調(diào)試的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • python 如何把docker-compose.yaml導(dǎo)入到數(shù)據(jù)庫相關(guān)條目里

    python 如何把docker-compose.yaml導(dǎo)入到數(shù)據(jù)庫相關(guān)條目里

    這篇文章主要介紹了python 如何把docker-compose.yaml導(dǎo)入到數(shù)據(jù)庫相關(guān)條目里?下面小編就為大家介紹一下實現(xiàn)方式,一起跟隨小編過來看看吧
    2021-01-01

最新評論

湘潭市| 广南县| 新泰市| 呼伦贝尔市| 泌阳县| 凤阳县| 隆回县| 定南县| 定陶县| 宁明县| 灵石县| 永福县| 白玉县| 大竹县| 沁阳市| 四子王旗| 临邑县| 江阴市| 靖州| 尚义县| 遵义市| 揭阳市| 忻城县| 博乐市| 青川县| 霍州市| 柘荣县| 顺平县| 屯昌县| 湘阴县| 承德县| 万全县| 房产| 宜阳县| 芒康县| 新郑市| 铅山县| 华容县| 鄂温| 罗平县| 蕲春县|