Python异步编程Future对象详解

article/2025/8/26 8:09:42

今天继续给大家介绍Python相关知识,本文主要内容是Python异步编程Future对象详解。

一、Python Future对象简介

在上文Python Task对象详解中,我们介绍到了Task对象,而Future对象是Task对象的基类,比Task更加底层。一个Future是用来表示将来要完成的结果,维护者状态,其内部封装了一个_state的值,如果编程finished,就不再等待,而是继续向后执行。
Future对象创建代码如下所示:

loop=asyncio.get_running_loop()
fut=loop.create_future()

在上述代码中,asyncio.get_running_loop()函数创建了一个事件循环,而loop.create_future()则返回了一个future对象。
在下列代码中:

import asyncioasync def main():loop=asyncio.get_running_loop()fut=loop.create_future()await futasyncio.run(main())

我们创建了一个future对象,并且使用await关键字等待该对象的执行,但是由于我们没有实质上赋予Future对象内容,但是程序却一直等待该Future对象的结果,因此该程序将一直等待,不会执行完毕退出。

二、Python Future对象使用示例

Python asyncio异步编程Future对象使用示例如下所示:

import asyncioasync def fun(fut):await asyncio.sleep(2)fut.set_result("123")
async def main():loop=asyncio.get_running_loop()fut=loop.create_future()await loop.create_task(fun(fut))data = await futprint(data)asyncio.run(main())

在上述代码中,我们的fun()函数调用了一个Future对象,并在运行2秒后,给Future对象赋值,这样在await fut时,就会有fut的返回结果,因此上述程序就可以正常运行并结束。但是如果我们删除ut.set_result(“123”)这段代码,就会使得程序一直处在等待状态而无法退出。
上述代码运行结果如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200


http://chatgpt.dhexx.cn/article/QU4Gyf9N.shtml

相关文章

Python异步编程之concurrent.futures中的Future对象详解

今天继续给大家介绍Python相关知识,本文主要内容是Python异步编程之concurrent的future对象详解。 一、concurrent.futures中Future对象简介 在前文Python异步编程Future对象详解种,我们介绍了asyncio中的Future对象。然而,在Python中&…

python网络编程实战_Python 异步网络编程实战

近年来 Python 的发展的非常迅速,“简单”、“高效”是 Python 吸引人的一大特色。在国内 Python 开发需求越来越大,Python 具有丰富强大的库,现在各个领域都在广泛使用,从 Web 开发,到运维开发,到机器学习…

Python异步编程实战入门:从概念到实战

概述 读者可前往我的博客获得更好的阅读体验 在Python中存在GIL机制,该机制保证了在Python中同时间内仅能运行一行代码,这导致了Python无法真正实现多线程,但可以通过多进程打破GIL限制,我们会在本文的最后讨论此内容。但Python…

Python异步编程详解

一、异步编程相关概念 1、I/O模型 IO操作实际过程涉及到内核和调用这个IO操作的进程。对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说&am…

python进阶(十):异步编程

Python异步编程详解 原文 | 大纲 | 首页 异步编程是一种编程范式,可以提高程序的并发性和响应性。在Python中,可以使用asyncio模块来实现异步编程。了解Python的异步编程对于编写高效和可扩展的程序非常重要。 使用asyncio模块 Python的asyncio模块提…

超简单的Python教程系列——异步

Python 3.5 引入了两个新关键字:​ ​async​ ​​和​ ​await​ ​​。这些看似神奇的关键字完全可以在没有任何线程的情况下实现类似线程的并发。在本教程中,我们将介绍异步编程的原因,并通过构建我们自己的小型异步类框架来说明Python的​…

python之异步编程

一、异步编程概述 异步编程是一种并发编程的模式,其关注点是通过调度不同任务之间的执行和等待时间,通过减少处理器的闲置时间来达到减少整个程序的执行时间;异步编程跟同步编程模型最大的不同就是其任务的切换,当遇到一个需要等…

[进阶] --- Python3 异步编程详解(史上最全篇)

[进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html 木风卜雨:https://blog.csdn.net/lu8000 1 什么是异步编程 1.1 阻塞…

tp5框架添加数据

tp5添加数据 添加 (js部分) 添加(php部分) 删除(js部分)

TP5框架后台排序

在写TP5框架开发的官网时,遇见需要为列表按倒序排列,若从数据库直接取出ID会因为该ID不连续,造成用户阅读困难。 因此查找了解决该问题的方法,因为涉及到分页,所以利用分页解决该问题 后台方法 前端页面数据 上图为正…

TP5框架查询数据获取结果集为数组的办法

TP5框架查询数据获取结果集为数组的办法 title: TP5框架查询数据获取结果集为数组的办法 tags: [TP5,模型,结果集,数组] 众所周知,使用TP5框架查询数据时,返回的结果集一般为对象,例如: $data \app\home\model\User::select();打…

tp5框架开发RESTful风格接口例子

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/example440982/article/details/80328087 tp5框架开发RESTful风格接口例子 time: 2018/5/15 author:…

TP5框架学习心得————(TP5框架的下载与其的基本目录结构)

一个好的软件直接影响到了我们的学习效率 TP5实在TP3.2的基础上改进的,相对与其他的框架个人觉得更适合与我们中国人毕竟是我们中国人自主研发的,想要学习起来其实也不难,只要看懂手册结合手册用一些小demo实现增、删、改、查基本上也就算入门了。 第一步:下载TP5框架 在…

tp5 框架使用Redis缓存,详解

1.小皮配置下载redis环境 1.打开小皮软件,选择软件管理找到redis下载, 2.找到网站域名,点击管理选中PHP扩展,选中redis 3.在首页启动redis,并查看配置 一般我们在小皮内启动redis后,查看配置参数是否正确…

tp5框架实现登录功能

TP5框架实现登录功能 安装TP框架 使用最简单的安装方式,直接从官网下载解压,将压缩包里的文件复制到项目目录下。 管网地址:http://www.thinkphp.cn/down.html 安装完框架的目录如图所示 添加控制器 在application\index\controller目录…

TP5框架目录解析

|-application 应用目录(几乎整个项目的内容都写在这里)|-index(这里的文件夹tp5叫做模块-----一般是前台模块,也可以根据需要需求修改成其他(例如:home),需要修改配置文件,修改默认模块、控制器、操作) 【注】:TP5默认只有一个index文件(模块)和一个控制层(con…

tp5登出_tp 5框架实现登录,登出及session登录状态检测功能示例

本文实例讲述了tp 5框架实现登录,登出及session登录状态检测功能。共享给大家供大家参考,详细如下: 1,访问http://localhost/tp5/admin.php时,判断有没有登录: 想法:写一个父类,继承…

ThinkPhp5开发实战1:搭建环境配置TP5框架(持续更新收藏关注)

文章目录 前言一、下载thinkphp5.0.10和安装本地环境二、下载H-UI后端模板三、静态文件引入四、创建后台页面首页 前言 php框架有助于促进快速应用开发,不仅节省时间,有助于建立更稳定的应用,而且,减少了重复代码。本文章采用图文…

SAP中会计科目删除相关知识点

一、考虑实际业务情况及科目删除的必要性或替代方案。如科目锁定可以满足业务需求的情况下,尽量不删除。 二、无业务数据的科目删除; 通过事务OBR2来执行科目删除。但前提是科目建立后没有任务过账业务数据。在OBR2的帮助信息中有相关描述。 三、删除标…