鍍金池/ 問(wèn)答/Python/ aiohttp 異步

aiohttp 異步

t0 = time.time()

loop = asyncio.get_event_loop()
loop.run_until_complete(fetch(BASE_URL+"/43_43074/", callback=parse_url))
tasks = [fetch(BASE_URL + page_url, callback=parse_body, title=title) for title, page_url in TITLE2URL.items()]
loop.run_until_complete(asyncio.gather(*tasks[:500]))
loop.close()
elapsed = time.time() - t0
print("cost {}".format(elapsed))

這里的loop.run_until_complete(asyncio.gather(*tasks[:500])) 和 loop.run_until_complete 有啥區(qū)別
還有一個(gè)await 這個(gè)又啥區(qū)別

回答
編輯回答
心悲涼

1.每個(gè)線程有一個(gè)事件循環(huán),主線程調(diào)用asyncio.get_event_loop時(shí)會(huì)創(chuàng)建事件循環(huán),你需要把異步的任務(wù)丟給這個(gè)循環(huán)的run_until_complete方法,事件循環(huán)會(huì)安排協(xié)同程序的執(zhí)行。和方法名字一樣,異步的任務(wù)完成方法才會(huì)就執(zhí)行完成了。
2.await 就是協(xié)同的執(zhí)行那些同步的任務(wù),直到完成。

2018年6月3日 06:20