python里使用Future對象來異步
- 2020 年 1 月 6 日
- 筆記
一個Future是用來表示將來要完成的結果,異步循環可以自動完成對這種對象的狀態觸發,例子如下:
import asyncio def mark_done(future, result): print('setting future result to {!r}'.format(result)) future.set_result(result) event_loop = asyncio.get_event_loop() try: all_done = asyncio.Future() print('scheduling mark_done') event_loop.call_soon(mark_done, all_done, 'the result') print('entering event loop') result = event_loop.run_until_complete(all_done) print('returned result: {!r}'.format(result)) finally: print('closing event loop') event_loop.close() print('future result: {!r}'.format(all_done.result()))
輸出結果如下:
scheduling mark_done entering event loop setting future result to 'the result' returned result: 'the result' closing event loop future result: 'the result'
在這個例子里,並沒有調用return語句,但也可以生成一個結果返回。Future的使用跟協程使用是一樣的。