同步请求和异步请求的性能测试代码
性能测试说明测试内容连续发起20次HTTP请求分别测试同步串行 requests多线程并发 requests协程异步 aiohttp统一目标地址控制超时统计总耗时直观对比差距。完整测试代码importtimeimportthreadingimportrequestsimportasyncioimportaiohttp# 配置TEST_URLhttps://httpbin.org/getREQUEST_COUNT20TIMEOUT5# ---------------------- 1. 同步串行请求 ----------------------defsync_request():starttime.time()sessionrequests.Session()for_inrange(REQUEST_COUNT):try:session.get(TEST_URL,timeoutTIMEOUT)exceptException:passcostround(time.time()-start,2)print(f【同步串行】{REQUEST_COUNT}次请求总耗时{cost}s)# ---------------------- 2. 多线程 requests 并发 ----------------------defthread_fetch():try:requests.get(TEST_URL,timeoutTIMEOUT)exceptException:passdefthread_request():starttime.time()tasks[]for_inrange(REQUEST_COUNT):tthreading.Thread(targetthread_fetch)tasks.append(t)t.start()fortintasks:t.join()costround(time.time()-start,2)print(f【多线程并发】{REQUEST_COUNT}次请求总耗时{cost}s)# ---------------------- 3. 异步 aiohttp 并发 ----------------------asyncdefasync_fetch(session):try:awaitsession.get(TEST_URL,timeoutaiohttp.ClientTimeout(totalTIMEOUT))exceptException:passasyncdefasync_main():asyncwithaiohttp.ClientSession()assession:tasks[async_fetch(session)for_inrange(REQUEST_COUNT)]awaitasyncio.gather(*tasks)defasync_request():starttime.time()asyncio.run(async_main())costround(time.time()-start,2)print(f【异步协程】{REQUEST_COUNT}次请求总耗时{cost}s)if__name____main__:sync_request()thread_request()async_request()预期运行结果参考【同步串行】20次请求总耗时6.85 s 【多线程并发】20次请求总耗时0.72 s 【异步协程】20次请求总耗时0.65 s补充版本限制并发数量更贴近真实业务真实项目不会无限并发我们加上并发上限对比效果更真实importtimeimportasyncioimportaiohttp TEST_URLhttps://httpbin.org/getREQUEST_COUNT20MAX_CONCURRENT5# 限制最大并发量asyncdeflimited_fetch(session,sem):asyncwithsem:try:awaitsession.get(TEST_URL,timeoutaiohttp.ClientTimeout(total5))exceptException:passasyncdefmain():semasyncio.Semaphore(MAX_CONCURRENT)asyncwithaiohttp.ClientSession()assession:tasks[limited_fetch(session,sem)for_inrange(REQUEST_COUNT)]awaitasyncio.gather(*tasks)if__name____main__:stime.time()asyncio.run(main())print(f限制{MAX_CONCURRENT}并发总耗时{round(time.time()-s,2)}s)总结对比同步串行总时间 ≈ 单次耗时 × 请求总数最慢多线程利用多线程等待IO速度大幅提升但是线程创建有开销异步协程轻量级调度无线程开销连接池复用TCP同等并发下速度略优于多线程内存占用更低。需要我把这段测试代码整理成博客正文版本吗

相关新闻

D2RML终极指南:彻底解决暗黑2重制版多开登录难题的完整方案

D2RML终极指南:彻底解决暗黑2重制版多开登录难题的完整方案

D2RML终极指南:彻底解决暗黑2重制版多开登录难题的完整方案 【免费下载链接】D2RML Diablo 2 Resurrected Multilauncher 项目地址: https://gitcode.com/gh_mirrors/d2/D2RML 还在为每次登录暗黑破坏神2重制版而耗费宝贵时间吗?每次切换账户都需…

2026/6/28 7:13:30阅读更多 →
py learning - day 2(列表特点、元组)

py learning - day 2(列表特点、元组)

列表与元组 一、列表 列表的特点 列表有以下特点: 可重复性:列表的元素是可以重复的;有序性:列表会严格记录每个元素“放进去的先后位置”,并且你可以通过下标(索引)精准地找到任意位置的元素&a…

2026/6/28 7:13:30阅读更多 →
实战指南:5个步骤高效部署开源传奇服务器OpenMir2

实战指南:5个步骤高效部署开源传奇服务器OpenMir2

实战指南:5个步骤高效部署开源传奇服务器OpenMir2 【免费下载链接】OpenMir2 Legend of Mir 2 Game server 项目地址: https://gitcode.com/gh_mirrors/op/OpenMir2 OpenMir2是一个基于C#开发的完整传奇2游戏服务器解决方案,完全兼容1.76经典版本…

2026/6/28 7:13:30阅读更多 →
3步轻松上手:HTML转Figma的完整工作流指南

3步轻松上手:HTML转Figma的完整工作流指南

3步轻松上手:HTML转Figma的完整工作流指南 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 你是否曾经面对一个设计精美的网站,想要在Figma中快速重建却无从…

2026/6/28 8:48:36阅读更多 →
基于 MAF 的 HPF的设计分析

基于 MAF 的 HPF的设计分析

简言 MAF(Moving Average Filter,滑动平均滤波器) 基于 MAF 的 HPF(High-Pass Filter,高通滤波器) 2.设计目标 1.抑制 dc 2.抑制 极低频 3.尽量不影响二次谐波分量 2fo 所以窗口长度选成:这意味…

2026/6/28 8:48:36阅读更多 →
如何在3分钟内配置Boss-Key:Windows窗口管理终极隐私保护方案

如何在3分钟内配置Boss-Key:Windows窗口管理终极隐私保护方案

如何在3分钟内配置Boss-Key:Windows窗口管理终极隐私保护方案 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你是否曾在办公室…

2026/6/28 8:48:36阅读更多 →
终极指南:如何用 pkNX 轻松编辑宝可梦Switch游戏ROM

终极指南:如何用 pkNX 轻松编辑宝可梦Switch游戏ROM

终极指南:如何用 pkNX 轻松编辑宝可梦Switch游戏ROM 【免费下载链接】pkNX Pokmon (Nintendo Switch) ROM Editor & Randomizer 项目地址: https://gitcode.com/gh_mirrors/pk/pkNX 如果你是一名宝可梦Switch游戏爱好者,想要自定义游戏内容、…

2026/6/28 8:48:36阅读更多 →
自己使用C++开发的仿OpenClaw、Hermes智能体工具

自己使用C++开发的仿OpenClaw、Hermes智能体工具

使用C开发的原因是我只会C/C,虽然熟悉一点Python,但只能勉强上手,对于开发复杂度较高的项目,就会捉襟见肘。相较于Python、TypeScript等脚本语言,使用C开发的难度比较大,由于缺少第三方库的原因&#xff0c…

2026/6/28 8:48:36阅读更多 →
提交GitHub 完整 Git 命令总结

提交GitHub 完整 Git 命令总结

一、首次从 GitHub 克隆(别人或你自己另一台机器) git clone https://github.com/Trisyp/cnipa-patent-writer.git cd cnipa-patent-writer Windows PowerShell 克隆到技能目录示例: git clone https://github.com/Trisyp/cnipa-patent-writer.git $env:USERPROFILE\.cu…

2026/6/28 8:43:36阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →