Python中把协程变成任务方法详解
2017-09-12 22:28
549 查看
本文和大家分享的主要是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软件开发
在这里使用 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软件开发
相关文章推荐
- Python学习之协程使用同步锁lock方法详解
- Linux中使用python crontab设置定时任务的方法详解
- python里把协程变成任务
- win7下计划任务schtasks使用详解及"错误:无法加载列资源"的解决方法1
- Python 字符串方法详解
- lambda表达式使用方法详解 分类: python 2013-03-15 10:58 396人阅读 评论(0) 收藏
- python的协程和并发-使用yield实现并有使用详解
- Python 字符串方法详解
- Python 字符串方法详解
- 详解Python模块导入方法
- php定时计划任务的实现方法详解
- python os.path模块常用方法详解
- python学习九:SocektServer学习、bisect、list的sort详解、清空字典的两种方法、zip初探
- open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
- 预习任务:Python课堂实录-面向对象-02(类的方法)
- 详解Python模块导入方法
- Python内置字符串操作处理方法详解
- 详解Python模块导入方法
- Python 字符串方法详解
- Python 字符串方法详解