import asyncio import aiohttp @asyncio.coroutine def download(url): response = yield from aiohttp.request('GET', url) return (yield from response.read_and_close()) urls = ['http://www.yahoo.co.jp', 'http://www.google.co.jp'] loop = asyncio.get_event_loop() f = asyncio.wait([download(u) for u in urls]) r = loop.run_until_complete(f) for i in r[0]: print(i.result())asyncio.waitは複数のコルーチンを1つのFutureにまとめる
asyncio.waitの戻り値は(done, pendding)のタプル
future.doneがTrueの場合はdoneにfutureが格納される。
run_until_completeは引数futureの戻り値(future.result())
なのでr[0]には処理が完了したfutureが格納されており、そのリストのなかのfutureの結果にdownload関数の戻り値が格納されている
0 件のコメント:
コメントを投稿