- 兩個大神吵架
但由於code讓我跑起來都還是停留在sync的感覺,但明明感覺async await的語法跟yield應該可以互換才對,我資質愚鈍,只好再看一下官方文件(遺忘好久) 來修改一下。
import asyncio
import time
begin = time.time()
def async_generator():
@asyncio.coroutine
def count_down(i, c):
print('Run {}, countdown {} (clock {:.5f})'.format(i, c, time.time() - begin))
if c == 0:
return
yield from asyncio.sleep(0.5)
yield from count_down(i, c - 1)
i = 1
while i <= 5:
yield count_down(i, i)
i += 1
@asyncio.coroutine
def run_all(asyncGen):
for a in asyncGen:
yield from a
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(
run_all(async_generator()),
run_all(async_generator()),
) )
loop.close()
結果如下
Run 1, countdown 1 (clock 0.00050)
Run 1, countdown 1 (clock 0.00066)
Run 1, countdown 0 (clock 0.50147)
Run 2, countdown 2 (clock 0.50162)
Run 1, countdown 0 (clock 0.50175)
Run 2, countdown 2 (clock 0.50182)
Run 2, countdown 1 (clock 1.00257)
Run 2, countdown 1 (clock 1.00276)
Run 2, countdown 0 (clock 1.50356)
Run 3, countdown 3 (clock 1.50377)
Run 2, countdown 0 (clock 1.50389)
Run 3, countdown 3 (clock 1.50397)
Run 3, countdown 2 (clock 2.00476)
Run 3, countdown 2 (clock 2.00498)
Run 3, countdown 1 (clock 2.50575)
Run 3, countdown 1 (clock 2.50594)
Run 3, countdown 0 (clock 3.00674)
Run 4, countdown 4 (clock 3.00712)
Run 3, countdown 0 (clock 3.00725)
Run 4, countdown 4 (clock 3.00732)
Run 4, countdown 3 (clock 3.50810)
Run 4, countdown 3 (clock 3.50832)
Run 4, countdown 2 (clock 4.00911)
Run 4, countdown 2 (clock 4.00934)
Run 4, countdown 1 (clock 4.50968)
Run 4, countdown 1 (clock 4.51000)
Run 4, countdown 0 (clock 5.01084)
Run 5, countdown 5 (clock 5.01100)
Run 4, countdown 0 (clock 5.01117)
Run 5, countdown 5 (clock 5.01128)
Run 5, countdown 4 (clock 5.51200)
Run 5, countdown 4 (clock 5.51223)
Run 5, countdown 3 (clock 6.01298)
Run 5, countdown 3 (clock 6.01319)
Run 5, countdown 2 (clock 6.51349)
Run 5, countdown 2 (clock 6.51368)
Run 5, countdown 1 (clock 7.01446)
Run 5, countdown 1 (clock 7.01468)
Run 5, countdown 0 (clock 7.51548)
Run 5, countdown 0 (clock 7.51577)
稍微修改CODE才達到我覺得async,所以TMD你們說的async是甚麼 身為阿廢看不懂啊!