一个具有 _asyncio_future_blocking 属性的对象 (2)asyncio.ensure_future(obj, *, loop=None)。将一个obj包装成Future (3)asyncio.wrap_future(future, *, loop=None) 将concurrent.futures.Future对象包装成一个 asyncio.Future 对象。 3、Future对象的常用方法 (1)result()。返回Future执行的结果返回值 如果...
loop = asyncio.get_event_loop() get_future = asyncio.ensure_future(get_html("http://www.imooc.com")) # 相当于开启一个future loop.run_until_complete(get_future) # 事件循环 print(get_future.result()) # 获取结果 2. 使用loop自带的create task, 获取返回值 # 获取协程的返回值 import asynci...
asyncio.ensure_future(asyncio.ensure_future(wait_and_print(1, 'f'))) asyncio.ensure_future(wait_and_print(1, 'b')) asyncio.ensure_future(asyncio.gather(wait_and_print(1, 'd'))) asyncio.create_task(wait_and_print(1, 'a')) await wait_and_print(1, 'c') asyncio.ensure_future(async...
loop = asyncio.get_event_loop() task = asyncio.ensure_future(coroutine) # 添加回调函数 task.add_done_callback(callback) loop.run_until_complete(task) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 输出 这里是回调函数,获取返回结果是: 暂停了2秒!
loop.create_task接受的参数需要是一个协程,但是asyncio.ensure_future除了接受协程,还可以是Future对象或者awaitable对象: 如果参数是协程,其实底层还是用的loop.create_task,返回Task对象 如果是Future对象会直接返回 如果是一个awaitable对象会await这个对象的__await__方法,再执行一次ensure_future,最后返回Task或者Futu...
())会得到相同的结果,它的参数是协程对象或者futures,也可以传task对象,因为task是futures的子类,当传入的是一个协程对象时,返回一个task对象,传入一个futures的时候,直接返回futures对象,也就是说,在调用asyncio.ensure_future()以后,都会返回一个task对象,都可以为它添加一个回调方法,并且可以调用task.result()...
注意:asyncio.wait 源码内部会对列表中的每个协程执行ensure_future从而封装为Task对象,所以在和wait配合使用时task_list的值为[func(),func()] 也是可以的。 示例3: import asyncio async def func(): print("执行协程函数内部代码") ...
也可以使用ensure_future获取返回值 例如: importasyncioasyncdeffun():print('hello word')return'miao'#def callback(future):#print('Callback: ', future.result())loop=asyncio.get_event_loop()#task = loop.create_task(fun())#task.add_done_callback(callback)task=asyncio.ensure_future(fun())lo...
{}'.format(x))coroutine=do_some_work('two')# 创建协程loop=asyncio.get_event_loop()# 创建事件循环task=loop.create_task(coroutine)# 将协程作为参数创建任务# task = asyncio.ensure_future(coroutine) 作用同上# task 是 asyncio.Task 类的实例,asyncio.Task 是 asyncio.Future 的子类# 为什么要用协程...
rununtilcomplete的参数是一个futrue对象。当传入一个协程,其内部会自动封装成task,其中task是Future的子类。关于task和future后面会提到。 从协程中返回值 将上面的代码,改写成下面代码 import asyncio async def foo(): print("这是一个协程") return "返回值" ...