async def 异步编程

2024-08-26 18:52
文章标签 编程 异步 async def

本文主要是介绍async def 异步编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python异步函数即async必须在普通函数的命名前加上async

参考文档: 第二十一章 异步编程_async def-CSDN博客

三 示例一

#!/usr/bin/env python3
import asyncio
import socket
from keyword import kwlistMAX_KEYWORD_LEN = 4  1async def probe(domain: str) -> tuple[str, bool]:  2loop = asyncio.get_running_loop()  3try:await loop.getaddrinfo(domain, None)  4except socket.gaierror:return (domain, False)return (domain, True)async def main() -> None:  5names = (kw for kw in kwlist if len(kw) <= MAX_KEYWORD_LEN)  6domains = (f'{name}.dev'.lower() for name in names)  7coros = [probe(domain) for domain in domains]  8for coro in asyncio.as_completed(coros):  9domain, found = await coro  10mark = '+' if found else ' 'print(f'{mark} {domain}')if __name__ == '__main__':asyncio.run(main())  11

四 示例二

import asyncio
import timefrom x_mock.m_mock import m_mockdef get_time():return m_mock.mock('@time("%H:%M:%S.%f")')async def case_a():print('start', get_time(), 'case_a')await asyncio.sleep(2)  # 只阻塞当前函数,所以比case_b 多等 1s,下面这句最后打印print('end', get_time(), 'case_a')return 'case_a'async def case_b():print('start', get_time(), 'case_b')await asyncio.sleep(1)print('end', get_time(), 'case_b')return 'case_b'async def main():return await asyncio.gather(case_a(),case_b())if __name__ == '__main__':start = time.time()# asyncio.run(main())  # 运行方式1,不建议,会有一些报错# 运行方式2loop = asyncio.get_event_loop()print(loop.run_until_complete(main()))print(time.time() - start)

这篇关于async def 异步编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109398

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Java 中实现异步的多种方式

《Java中实现异步的多种方式》文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧... 目录1. 线程池(ExecutorService)2. CompletableFuture3. ForkJoi

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

异步线程traceId如何实现传递

《异步线程traceId如何实现传递》文章介绍了如何在异步请求中传递traceId,通过重写ThreadPoolTaskExecutor的方法和实现TaskDecorator接口来增强线程池,确保异步... 目录前言重写ThreadPoolTaskExecutor中方法线程池增强总结前言在日常问题排查中,