python 3.6不但支援本地協同程式和非同步/等待語法,而且可在同乙個函式體中使用await和yield,從而定義非同步生成器,使得編寫非同步資料生產者非常容易實現。如**1-6所示。
器**每秒產生乙個數字並依次輸出0~4async def ticker (delay, to):
"""產生0到to的數字每delay 秒。"""
for i in range(to):
yield i
await asyncio.sleep(delay)
async def printnum():
async for i in ticker(1, 5):
print(i)
import asyncio
loopprint = asyncio.get_event_loop()
try:
loopprint.run_until_complete(printnum())
except:
pass
非同步生成
python3精要 18 函式主要概念
1 def是可執行 不是宣告函式,python不是編譯語言,沒有執行def,該函式就不存在。2 def定義了乙個函式物件,物件名就是函式名 3 lambda建立了乙個函式物件,原理和def一樣,只是它返回了這個函式物件的引用。4 return將結果物件發給呼叫者 5 yield和return類似,不...
python3 非同步 async with 用法
非同步上下文管理器指的是在enter和exit方法處能夠暫停執行的上下文管理器。為了實現這樣的功能,需要加入兩個新的方法 aenter 和 aexit 這兩個方法都要返回乙個 awaitable型別的值。非同步上下文管理器的一種使用方法是 class asynccontextmanager asyn...
python3 非同步模組asyncio
yield方法引入,這裡存在的問題是,如果你想建立從0到1,000,000這樣乙個很大的序列,你不得不建立能容納1,000,000個整數的列表。但是當加入了生成器之後,你可以不用建立完整的序列,你只需要能夠每次儲存乙個整數的記憶體即可。import asyncio asyncio.coroutine...