异步编程

news/2024/11/15 1:03:45/文章来源:https://www.cnblogs.com/Zhouzg-2018/p/18203193
导入模块:
导入asyncio库,这是Python的异步编程库。
导入time模块,用于获取当前时间。
定义异步函数:
say_after是一个异步函数,它接受两个参数:delay(等待的时间)和what(要打印的消息)。
函数内部使用await asyncio.sleep(delay)来等待指定的延迟时间。
函数返回一个格式化的字符串,包含消息和延迟时间。
定义主函数:
main是一个异步函数,它定义了程序的主要逻辑。
在main函数中,创建了两个异步任务task1和task2,它们分别调用say_after函数并等待1秒和2秒。
使用time.strftime('%Y-%m-%d %H:%M:%S')获取当前时间并打印开始时间。
使用asyncio.gather(task1, task2)来并发执行task1和task2,并等待它们完成。
打印返回值列表ret,由于say_after函数没有返回值,ret将是一个空列表。
打印结束时间。
运行主函数:
最后,使用asyncio.run(main())来运行main函数。这个函数内部会创建一个事件循环,并启动它以运行main函数。
当运行这段代码时,它会输出开始时间、两个任务的返回值列表(由于say_after函数没有返回值,这个列表将是空的)和结束时间。
 1 import asyncio
 2 import time
 3 
 4 # 定义异步函数 say_after
 5 async def say_after(delay, what):
 6     # 等待指定的延迟时间
 7     await asyncio.sleep(delay)
 8     # 返回一个格式化的字符串,包含消息和延迟时间
 9     return f"{what}-{delay}"
10 
11 # 定义主函数 main
12 async def main():
13     # 创建异步任务 task1 和 task2
14     task1 = asyncio.create_task(say_after(1, 'hello'))
15     task2 = asyncio.create_task(say_after(2, 'world'))
16 
17     # 打印开始时间
18     print(f"started at {time.strftime('%Y-%m-%d %H:%M:%S')}")
19 
20     # 使用 asyncio.gather 并发执行 task1 和 task2
21     # gather 函数会等待所有任务完成并返回它们的返回值
22     ret = await asyncio.gather(task1, task2)
23 
24     # 打印返回值列表
25     print(ret)
26 
27     # 打印结束时间
28     print(f"finished at {time.strftime('%Y-%m-%d %H:%M:%S')}")
View Code

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OWA top 10 简介

owa top 10 OWASP Top10是什么? OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。 其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并…

OpenVX便携式、高能效的视觉处理

OpenVX便携式、高能效的视觉处理 OpenVX 1.3.1 来了! OpenVX 1.3.1 规范于 2022 年 2 月 2 日发布OpenVX™ 是一种开放、免版税的标准,用于计算机视觉应用程序的跨平台加速。OpenVX 支持性能和功耗优化的计算机视觉处理,这在嵌入式和实时用例中尤为重要,例如面部、身体和手…

分片集群组件

MongoDB分片集群由以下组件组成:shard:每个分片包含分片数据的子集。每个分片必须部署为副本集。mongos:mongos充当查询路由器,提供客户端应用程序和分片集群之间的接口。mongos可以支持 对冲读取以最小化延迟。config servers:配置服务器存储集群的元数据和配置设置。从 …

解决Windows远程桌面连接Windows时“终端服务器超出了最大允许连接数”

解决Windows远程桌面连接Windows时“终端服务器超出了最大允许连接数”1. 问题分析 在Windows Server中,远程桌面服务的默认连接数限制为2个。当用户通过远程桌面登录并直接关闭窗口时,实际上连接并未被释放,而是保持在服务器端,导致连接数累积。当连接数达到最大值时,用户…

06--加密逻辑

各种加密逻辑 在进行js逆向的时候,总会遇见一些人类无法直接能理解的东西出现。此时你看到的大多数,是被加密过的密文。 一. 一切从MD5开始 MD5是一个非常常见的摘要(hash)逻辑。其特点就是小巧、速度快、极难被破解(王小云女士) 所以md5,依然是国内非常多的互联网公司,选择…

05--抓包工具、PyExecjs模块

抓包工具、PyExeJs模块 在处理一些网站的时候,会遇到一些屏蔽F12,以及只要按出浏览器的开发者工具,就会关闭甚至死机的现象 在遇到这类网站的时候,可以使用抓包工具,把页面上屏蔽开发者工具的代码给干掉 一. Fiddler和Charles 这两款工具是非常优秀的抓包工具。它们可以监…

5.21

ppt:1 代码:0 一个数据分析的ppt看一下吧:

西安游记 6.16 12.26 5.18

西安游记(三合一版) 前言 一年里到西安去了三次,没想到能和西安这么有缘分。 初遇 第一次去西安是刚刚高考完不久,之前没有怎么出去玩过,更别提没有家长的陪同去一个陌生的城市去旅游了。但其实在高考前就一直有一个愿望,就是可以和同学一起去一个其他的城市逛一逛,当时…

会计科目大白话解释

配合图片,更好理解~

深度学习-语音识别-音频处理--77

目录1. 概述2. 采样率3. 振幅数值的量化-分贝db4. 预处理--预加重5. 分帧6. 加窗7. 离散快速傅里叶变换8. 梅尔滤波器组9 倒谱分析10, 离散余弦变换11 MFCC12 倒谱均值减 1. 概述 语音产业的上一次爆发出现在20世纪80年代到90年代:隐马尔科夫模型的应用,使大规模连续语音识别…

智能指针用法学习

转自:https://blog.csdn.net/cpp_learner/article/details/118912592,chatgpt 1.介绍 智能指针就是帮管理动态分配的内存的,它会帮助我们自动释放new出来的内存,从而避免内存泄漏!使用智能指针可以自动调用对象的析构函数。例子:class Test { public:Test() { cout <&…

智能电网系统:构建未来能源的新篇章

随着科技的不断进步和全球能源需求的日益增长,智能电网系统已成为现代社会不可或缺的基础设施。它不仅能够提高能源利用效率,降低能源浪费,还能有效应对能源短缺和环境污染等问题。本文将围绕智能电网系统在能源管理、电力分配优化、需求响应以及分布式能源资源集成等方面的…