发布时间:2022-03-08 09:47:49 人气:488 作者:多测师
python 提供了 asyncio 模块来支持异步编程,其中涉及到 coroutines、event loops、futures 三个重要概念;
event loops 主要负责跟踪和调度所有异步任务,编排具体的某个时间点执行的任务;
coroutines 是对具体执行任务的封装,是一个可以在执行中暂停并切换到 event loops 执行流程的特殊类型的函数;其一般还需要创建 task 才能被 event loops 调度;
futures 负责承载 coroutines 的执行结果,其随着任务在 event loops 中的初始化而创建,并随着任务的执行来记录任务的执行状态;
异步编程框架的整个执行过程涉及三者的紧密协作;
首先 event loops 启动之后,会从任务队列获取第一个要执行的 coroutine,并随之创建对应 task 和 future;
然后随着 task 的执行,当遇到 coroutine 内部需要切换任务的地方,task 的执行就会暂停并释放执行线程给 event loop,event loop 接着会获取下一个待执行的 coroutine,并进行相关的初始化之后,执行这个 task;
随着 event loop 执行完队列中的最后一个 coroutine 才会切换到第一个 coroutine;
随着 task 的执行结束,event loops 会将 task 清除出队列,对应的执行结果会同步到 future 中,这个过程会持续到所有的 task 执行结束;
以上内容为大家介绍了python 的异步框架模型,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/