5
我有堵塞,不異步代碼:懶惰迭代器(發電機)與ASYNCIO
def f():
def inner():
while True:
yield read()
return inner()
這段代碼的調用者可以選擇何時停止生成數據的功能。如何將其更改爲異步?此解決方案不起作用:
async def f():
async def inner():
while True:
yield await coroutine_read()
return inner()
...因爲yield
不能async def
功能一起使用。如果我從inner()
簽名中刪除async
,我不能再使用await
。
使用asyncio時,您不需要'yield read()',因爲'await'將在幕後完成。這當然不回答這個問題。 –
PEP-0492 [不包含](https://www.python.org/dev/peps/pep-0492/#coroutine-generators)coroutine-generators(這是你想要的),所以,由於PEP僅在3.5中實現,我想答案是「沒有辦法做到這一點」。 –
嘗試實現方式來產生異步函數:http://stackoverflow.com/a/37572657/1113207 –