python 协程之asyncio (二)
并发
协程是一种并发机制,和并行是有区别的。
并发是指一个处理器同时处理多个任务。逻辑上的同时发生。
并行是指多个处理器或者多核的处理器同时处理多个不同的任务。物理上的同时发生。
接下来创建多个协程
import asyncio,time async def say(name,hour): print ('%s 等待%d秒'%(name,hour)) await asyncio.sleep(hour) name_list=['jack','tom','mary','susan'] now=lambda:time.time() start=now() # 创建协程对象 coroutine_list=[] for i in range(len(name_list)): name=name_list[i] hour=i+1 coroutine_list.append(say(name,hour)) # 创建事件循环 loop=asyncio.get_event_loop() # 创建任务对象 task_list=[] for i in coroutine_list: task_list.append(loop.create_task(i)) # 注册任务对象 for task in task_list: loop.run_until_complete(task) print('耗时: %0.3f'%(now()-start))
如果单协程执行耗时就是1+2+3+4=10秒,这里做了异步化,所以在遇到阻塞的时候挂起去执行其他的任务,因此在阻塞4秒的时候足够其他的协程执行,所以仅仅耗时4秒。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程