导语:
本文主要介绍了关于python中Task封装协程的相关知识,包括python gevent,以及Python 携程这些编程知识,希望对大家有参考作用。
说明
1、Task是Future的子类。 Task是协程的封装。我们将多个任务放入循环调度列表中,等待调度执行。
2. Task 对象可以跟踪任务和状态。 Future(Task是Future的子类)为我们提供了异步编程中对最终结果的处理(Task类也有状态处理功能)。
3.将协程封装成一个Task,加入一个队列等待调用。刚创建Task时不执行,遇到await时执行。
实例
import asyncio
async def func():
print(1)
await asyncio.sleep(2)
print(2)
return "返回值"
async def main():
print("main开始")
# 创建协程,将协程封装到Task对象中并添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。
# 在调用
task_list = [
asyncio.create_task(func(), name="n1"),
asyncio.create_task(func(), name="n2")
]
print("main结束")
# 当执行某协程遇到IO操作时,会自动化切换执行其他任务。
# 此处的await是等待所有协程执行完毕,并将所有协程的返回值保存到done
# 如果设置了timeout值,则意味着此处最多等待的秒,完成的协程返回值写入到done中,未完成则写到pending中。
done, pending = await asyncio.wait(task_list, timeout=None)
print(done, pending)
asyncio.run(main())
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中shell的调用01/14
- ♥ python中的列表有什么用01/13
- ♥ 什么是 python CGI 脚本?如何使用?01/14
- ♥ 如何在python中获取输入数字10/04
- ♥ 四个小python练习题01/06
- ♥ 如何在python中定义一个不定长的二维数组?10/06
内容反馈