# 匯入 aiohttp 模組, 使用該模組中的 clientsession 類,例項化乙個物件進行網路請求
urls =
['',''
,'']async
defget_page
(url)
('正在請求:'
,url)
# 例項乙個session物件
# 注意: 使用aiohttp時,用到的**是字串形式,而requests 是字典形式
async
with
await session.get(url)
as response:
# text() 返回字串形式的響應資料
# read() 返回二進位制形式的響應資料
# json() 返回的就是json物件
# 注意:獲取響應資料操作之前一定要使用 await 進行手動掛起
page_text =
await response.text(
('請求完畢:'
,page_text)
tasks =
# 專門存放任務物件
stark_time = time.time(
)for url in urls:
c=get_page(url)
# 函式前面加上 async 就會返回乙個協程物件,此時不會執行函式
task = asyncio.ensure_future(c)
# 生成任務物件
# 將任務物件放進列表中
loop = asyncio.get_event_loop(
)loop.run_until_complete(asyncio.wait(tasks)
)end_time = time.time(
('總耗時:'
,end_time-stark_time)
列印結果:
正在請求: http:
.0.1
:5000
/bobo
正在請求: http:
.0.1
:5000
/haha
正在請求: http:
.0.1
:5000
/guagua
請求完畢: ok,guagua
請求完畢: ok,bobo
請求完畢: ok,haha
總耗時: 3.005218267440796
process finished with exit code 0
aiohttp實現多工非同步協程 簡單例項
text 返回以字串形式的響應資料 read 返回二進位制形式的響應資料 json 返回json物件 注意 響應資料操作前一定要使用await進行手動掛起 page text await responsse.text print page text tasks for url in urls c g...
實現多工
多工介紹 簡單來說就是作業系統可以同時執行過個任務 單核cpu作業系統會讓各個任務交替執行 真正的多工只能在多核cpu上實現,也就是並行和併發2 併發 併發 指的是任務數多於cpu核數,通過作業系統的各種任務排程演算法,實現用多個任務 一起 執行 實際上總有一些任務不在執行,因為切換任務的速度相當快...
Python 多工之協程(3)實現多工
學習理解迭代器和生成器之後,開始使用協程來實現多工 當乙個函式中包含yield關鍵字,那麼這個函式就不再是乙個普通的函式,它的返回值是乙個生成器物件。我們可以使用next 或send 函式來啟動喚醒生成器物件,當程式第一次執行到yield時,程式暫停執行,並返回yield後邊跟的變數,當再次喚醒時,...