非同步爬蟲 多工非同步協程示例

2022-09-09 08:24:10 字數 631 閱讀 8062

import asyncio

import time

async def request(url):

# 在非同步協程中如果出現了同步模組相關的**、那麼就無法實現非同步

await asyncio.sleep(2) # 當asyncio中遇到阻塞操作必須進行手動掛起

]# 任務列表,用於存放多個任務物件

stasks =

for url in urls:

c = request(url)

task = asyncio.ensure_future(c)

loop = asyncio.get_event_loop()

# 需要將任務列表封裝到 wait中

loop.run_until_complete(asyncio.wait(stasks))

print(time.time() - start)

# 執行結果

2.0103530883789062

多工非同步協程實現

usr bin env python coding utf 8 import random import time import asyncio async defeat name print s開始吃西瓜啦!name sleep time random.randint 1,3 在非同步協程中如果出...

爬蟲 單執行緒 多工非同步協程

要點 1.resquests模組不支援非同步,在需要非同步的地方使用aiohttp模組進行替換 2.定義乙個協程函式,建立協程任務,將 協程 打包為乙個 task 排入日程準備執行。返回task物件 獲取當前事件迴圈,開啟迴圈 data await response.read 此處參考aiohttp...

爬蟲 單執行緒 多工非同步協程

任務物件 事件迴圈 aiohttp 支援非同步網路請求的模組 伺服器端 from flask import flask import time def index bobo time.sleep 2 return hello index1 def index jay time.sleep 2 ret...