五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2021-12-29 21:51 | 文章來源:CSDN

背景

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

異步爬蟲方式

多線程,多進程(不建議)

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

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

線程池,進程池(適當使用)

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

弊端:線程或進程池中的數(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)下面的運行順序貌似有點亂的

線程池

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

#倒入線程池模塊對應的類
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ā)生阻塞的操作)進行處理
#map方法會有一個返回值為函數(shù)的返回值(一個列表),但是這里沒有返回值所以不考慮
#調(diào)用map方法
pool.map(xx,str)
end = time.time()
print('程序運行時間:',end-start)

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

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關(guān)注
微信

關(guān)注官方微信
頂部