Python中把协程变成任务方法详解

来源:互联网 发布:绝地求生罗技g502编程 编辑:程序博客网 时间:2024/04/30 10:40
本文和大家分享的主要是python中把协程变任务相关内容,一起来看看吧,希望对大家学习python有所帮助。
  在这里使用 ensure_future()函数可以把一个协程封装成一个任务,然后这个任务就可以传送给别的代码,不过要注意的是这个函数不会开始执行协程,需要使用关键await才会开始执行:
  import asyncio
  async def wrapped():
  print('wrapped')
  return 'result'
  async def inner(task):
  print('inner: starting')
  print('inner: waiting for {!r}'.format(task))
  result = await task
  print('inner: task returned {!r}'.format(result))
  async def starter():
  print('starter: creating task')
  task = asyncio.ensure_future(wrapped())
  print('starter: waiting for inner')
  await inner(task)
  print('starter: inner returned')
  event_loop = asyncio.get_event_loop()try:
  print('entering event loop')
  result = event_loop.run_until_complete(starter())finally:
  event_loop.close()
  输出结果如下:
  entering event loop
  starter: creating task
  starter: waiting for inner
  inner: starting
  inner: waiting for<Task pending coro=<WRAPPED() asyncio_ensure_future.py:4="" at="" running="">>
  wrapped
  inner: task returned 'result'
  starter: inner returned
来源:大坡3D软件开发
原创粉丝点击