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

python爬蟲(chóng)進(jìn)階之協(xié)程詳解

 更新時(shí)間:2023年08月09日 10:58:54   作者:南岸青梔*  
這篇文章主要介紹了python爬蟲(chóng)進(jìn)階之協(xié)程詳解,coroutine中文翻譯叫協(xié)程,在 Python 中昌指代為協(xié)程對(duì)象類型,可以將協(xié)程對(duì)象注冊(cè)到時(shí)間循環(huán)中被調(diào)用,需要的朋友可以參考下

python爬蟲(chóng)–協(xié)程

基本知識(shí)

  • event_loop:事件循環(huán),相當(dāng)于一個(gè)無(wú)限循環(huán),我們可以把一些函數(shù)注冊(cè)到這個(gè)事件循環(huán)上,當(dāng)滿足某些條件的時(shí)候,函數(shù)就會(huì)被循環(huán)執(zhí)行。
  • coroutine:攜程對(duì)象,我們可以將攜程對(duì)象注冊(cè)到事件循環(huán)中,它會(huì)被時(shí)間循環(huán)調(diào)用。我們可以使用async關(guān)鍵字來(lái)定義一個(gè)方法,這個(gè)方法在調(diào)用時(shí)不會(huì)被立即執(zhí)行,而是返回一個(gè)協(xié)程對(duì)象。
  • task:任務(wù),它是對(duì)協(xié)程對(duì)象的進(jìn)一步封裝, 包含了任務(wù)的各個(gè)狀態(tài)。
  • future:代表將來(lái)執(zhí)行或還沒(méi)有執(zhí)行的任務(wù),實(shí)際上和task 沒(méi)有本質(zhì)區(qū)別。
  • async定義-個(gè)協(xié)程.
  • await用來(lái)掛起阻塞方法的執(zhí)行。

協(xié)程的基本使用

import asyncio
async def request(url):
    print('正在請(qǐng)求的url是:',url)
    print('請(qǐng)求成功:',url)
#async修飾的函數(shù),調(diào)用之后返回的一個(gè)協(xié)程對(duì)象
c = request('www.baidu.com')
# #創(chuàng)建一個(gè)事件循環(huán)對(duì)象
# loop = asyncio.get_event_loop()
#
# #將攜程對(duì)象注冊(cè)到loop中,然后啟動(dòng)loop
# loop.run_until_complete(c)
# #task的使用
# loop = asyncio.get_event_loop()
# #基于loop創(chuàng)建一個(gè)task對(duì)象
# task = loop.create_task(c)
# print(task)
# loop.run_until_complete(task)
# print(task)
#future的使用
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(c)
print(task)
loop.run_until_complete(task)
print(task)

多任務(wù)協(xié)程實(shí)現(xiàn)

import asyncio
import time
async def request(url):
    print('正在請(qǐng)求的url是:',url)
    #在異步協(xié)程中如果出現(xiàn)同步模塊相關(guān)的代碼,那么就無(wú)法實(shí)現(xiàn)異步
    #time.sleep(2)
    await asyncio.sleep(2)
    print('請(qǐng)求成功:',url)
#async修飾的函數(shù),調(diào)用之后返回的一個(gè)協(xié)程對(duì)象
start = time.time()
urls = {
    'www.123.com',
    'www.234.com',
    'www.345.com'
}
#存放多個(gè)任務(wù)對(duì)象
stask = []
for url in urls:
    c = request(url)
    task = asyncio.ensure_future(c)
    stask.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(stask))
print(time.time()-start)

多任務(wù)協(xié)程異步實(shí)現(xiàn)

在進(jìn)行多任務(wù)協(xié)程實(shí)現(xiàn)前,還需要建立一個(gè)簡(jiǎn)單的本地http服務(wù)

from flask import Flask
import time
app = Flask(__name__)
@app.route('/azb')
def index_azb():
    time.sleep(2)
    return 'Hello azb'
@app.route('/xx')
def index_xx():
    time.sleep(2)
    return 'Hello xx'
@app.route('/hh')
def index_hh():
    time.sleep(2)
    return 'Hello hh'
if __name__ == '__main__':
    app.run(threaded=True)

在這里插入圖片描述

實(shí)現(xiàn)

import requests,asyncio,time
start = time.time()
urls = [
    'http://127.0.0.1:5000/azb','http://127.0.0.1:5000/xx','http://127.0.0.1:5000/hh'
]
async def get_page(url):
    print('正在下載',url)
    #request是基于同步,必須使用基于異步的網(wǎng)絡(luò)請(qǐng)求模塊
    response = requests.get(url=url)
    print('下載成功!',url)
tasks = []
for url in urls:
    c = get_page(url)
    task = asyncio.ensure_future(c)
    tasks.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
print('總耗時(shí)',time.time()-start)

在這里插入圖片描述

aiohttp模塊引入

import requests,asyncio,time,aiohttp
start = time.time()
urls = [
    'http://127.0.0.1:5000/azb','http://127.0.0.1:5000/xx','http://127.0.0.1:5000/hh'
]
async def get_page(url):
    async with aiohttp.ClientSession() as session:
        async with await session.get(url) as response:
            #text()返回字符串形式的響應(yīng)數(shù)據(jù)
            #read()返回的二進(jìn)制形式的響應(yīng)數(shù)據(jù)
            #json()返回的就是json對(duì)象
            #獲取響應(yīng)數(shù)據(jù)操作之前一定要使用await進(jìn)行手動(dòng)掛起
            page_text = await response.text()
            print(page_text)
tasks = []
for url in urls:
    c = get_page(url)
    task = asyncio.ensure_future(c)
    tasks.append(task)
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
print('總耗時(shí)',time.time()-start)

在這里插入圖片描述

到此這篇關(guān)于python爬蟲(chóng)進(jìn)階之協(xié)程詳解的文章就介紹到這了,更多相關(guān)python協(xié)程爬蟲(chóng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法

    python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法

    這篇文章主要介紹了python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。
    2017-01-01
  • Python大模型性能監(jiān)控之日志分析工具的選型與使用

    Python大模型性能監(jiān)控之日志分析工具的選型與使用

    本文探討了大模型工程化監(jiān)控中日志分析工具的選型與使用,重點(diǎn)介紹了相關(guān)技術(shù)原理和實(shí)現(xiàn)方法,文章還討論了性能指標(biāo)和優(yōu)化方向,為讀者提供了系統(tǒng)的知識(shí)框架和實(shí)踐指導(dǎo)
    2026-06-06
  • Python中使用支持向量機(jī)SVM實(shí)踐

    Python中使用支持向量機(jī)SVM實(shí)踐

    這篇文章主要為大家詳細(xì)介紹了Python中使用支持向量機(jī)SVM實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python實(shí)操案例練習(xí)(七)

    python實(shí)操案例練習(xí)(七)

    這篇文章主要介紹了python實(shí)操案例練習(xí),本文給大家分享的案例中主要任務(wù)有編寫(xiě)程序?qū)崿F(xiàn)樂(lè)手彈奏樂(lè)器、使用面向?qū)ο笤O(shè)計(jì)自定義類,描述出租車和家用轎車的信息,需要的小伙伴可以參考一下
    2022-02-02
  • python+django+sql學(xué)生信息管理后臺(tái)開(kāi)發(fā)

    python+django+sql學(xué)生信息管理后臺(tái)開(kāi)發(fā)

    這篇文章主要為大家詳細(xì)介紹了python+django+sql學(xué)生信息管理后臺(tái)開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python數(shù)據(jù)分析實(shí)戰(zhàn)指南之異常值處理

    python數(shù)據(jù)分析實(shí)戰(zhàn)指南之異常值處理

    數(shù)據(jù)預(yù)處理是明確分析目標(biāo)與思路之后進(jìn)行數(shù)據(jù)分析的第一步,也是整個(gè)項(xiàng)目中最基礎(chǔ)、花費(fèi)時(shí)間較長(zhǎng)的工作,下面這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)分析實(shí)戰(zhàn)指南之異常值處理的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 對(duì)Python 兩大環(huán)境管理神器 pyenv 和 virtualenv詳解

    對(duì)Python 兩大環(huán)境管理神器 pyenv 和 virtualenv詳解

    今天小編就為大家分享一篇對(duì)Python 兩大環(huán)境管理神器 pyenv 和 virtualenv詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python獲取文件路徑、文件名、后綴名的實(shí)例

    python獲取文件路徑、文件名、后綴名的實(shí)例

    下面小編就為大家分享一篇python獲取文件路徑、文件名、后綴名的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Linux使用python調(diào)用串口<Ubuntu>方式

    Linux使用python調(diào)用串口<Ubuntu>方式

    本文介紹在Ubuntu上使用Python和pyserial庫(kù)進(jìn)行串口通信的方法,涵蓋安裝庫(kù)、編寫(xiě)收發(fā)代碼及注意事項(xiàng),適合初學(xué)者入門
    2026-05-05
  • tensorflow實(shí)現(xiàn)訓(xùn)練變量checkpoint的保存與讀取

    tensorflow實(shí)現(xiàn)訓(xùn)練變量checkpoint的保存與讀取

    今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)訓(xùn)練變量checkpoint的保存與讀取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02

最新評(píng)論

庆安县| 长宁区| 卓资县| 来凤县| 华安县| 新闻| 凭祥市| 开鲁县| 白水县| 获嘉县| 噶尔县| 老河口市| 扶余县| 新津县| 丰都县| 吴堡县| 彰化市| 特克斯县| 正镶白旗| 大冶市| 大埔县| 天门市| 景洪市| 汉寿县| 浠水县| 桂阳县| 宝坻区| 开远市| 宝丰县| 阿合奇县| 乐山市| 东明县| 镇江市| 子长县| 巴林右旗| 新竹县| 十堰市| 营山县| 盖州市| 增城市| 纳雍县|