首页 > 其他分享 >同步异步对比

同步异步对比

时间:2024-12-12 19:20:20浏览次数:5  
标签:异步 www 同步 url https time com 对比 下载

前言

  同步的任务逐个按顺序执行,前一个任务完成后才执行下一个任务。异步的任务可交替运行,允许其他任务在等待期间继续执行。

1.同步示例

  内容,内容

import time
import requests

def download_url(url):
    print(f"开始下载:{url}")
    response = requests.get(url)
    print(f"下载完成:{url}, 状态码:{response.status_code}")

def main():
    urls = [
        "https://www.example.com",
        "https://www.python.org",
        "https://www.openai.com"
    ]
    start_time = time.time()
    for url in urls:
        download_url(url)
    print(f"总耗时:{time.time() - start_time:.2f} 秒")

if __name__ == "__main__":
    main()

输出:

开始下载:https://www.example.com
下载完成:https://www.example.com, 状态码:200
开始下载:https://www.python.org
下载完成:https://www.python.org, 状态码:200
开始下载:https://www.openai.com
下载完成:https://www.openai.com, 状态码:200
总耗时:6.15 秒

2.异步示例

import time
import aiohttp
import asyncio

async def download_url_async(url):
    print(f"开始下载:{url}")
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            print(f"下载完成:{url}, 状态码:{response.status}")

async def main():
    urls = [
        "https://www.example.com",
        "https://www.python.org",
        "https://www.openai.com"
    ]
    start_time = time.time()
    tasks = [download_url_async(url) for url in urls]
    await asyncio.gather(*tasks)
    print(f"总耗时:{time.time() - start_time:.2f} 秒")

if __name__ == "__main__":
    asyncio.run(main())

输出:

开始下载:https://www.example.com
开始下载:https://www.python.org
开始下载:https://www.openai.com
下载完成:https://www.example.com, 状态码:200
下载完成:https://www.python.org, 状态码:200
下载完成:https://www.openai.com, 状态码:200
总耗时:2.12 秒

3.总结

  同步操作如果某个任务需要等待(如 I/O 操作),会阻塞程序,导致资源浪费。异步操作不会阻塞,任务在等待时可以切换到其他任务。完整代码:https://chatgpt.com/share/675ac3af-d660-8007-ae4c-e8a072867a3d

标签:异步,www,同步,url,https,time,com,对比,下载
From: https://www.cnblogs.com/xinjieli/p/18603217

相关文章

  • 四个强大的 Salesforce 开源替方案(附成本对比)
    关于SalesforceSalesforce于1999年在美国旧金山创立,作为最早一批提供软件即服务(SaaS)的公司之一,Salesforce开创了基于云计算的商业应用模式。2000年代初:推出首个基于云的CRM产品,凭借其“无需安装、随时随地访问”的优势迅速吸引了大量用户。2004年:Salesforce在纽约证......
  • 一个基于gevent的异步请求库 - grequests
    1.安装pipinstallgrequests-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.aliyun.com2.基础用法教程用grequests.map()方法时,传入的必须是生成器或列表,下面是用小括号创建的是生成器,用方括号也行,生成列表。importgrequestsimporttimeur......
  • vscode+wsl Windows和Linux之间的文件同步
    vscode+wslWindows和Linux之间的文件同步创建VSCode任务配置文件运行任务创建VSCode任务配置文件在项目目录下创建或编辑.vscode/tasks.json配置文件//tasks.json{"version":"2.0.0","tasks":[{"label":"SyncWSLtoWindows",......
  • 前端的 Python 入门指南(七):异步场景的实现方案对比 - 内置+显示事件循环 + async+await
    《前端的Python入门指南》系列文章:(一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比-彻底的一切皆对象实现和包装对象异同(四):参数传递方式对比-值与引用传递vs可变不可变数据(五):面向对象特性之继承实现的方式对比-基于原型链和基于类各有什么......
  • 前端框架 React 与 Vue3对比 —— 技术选型
    在进行前端框架React与Vue3的技术选型对比时,我们可以从以下几个方面进行综合考虑:1.性能比较• Vue3通过Vite打包工具实现了快速的开发和构建,同时使用了响应式系统和Proxy技术来提高数据响应速度。在大部分测试用例中,Vue3比React更快,但在一些特定测试用例中,React......
  • 使用正点原子的直流无刷驱动板自写FOC控制永磁同步(PMSM)电机(开环位置)
    由于ST官方MotorControlWorkbench生成的FOC代码过于复杂,决定自己使用正点原子的直流无刷驱动板自己编写FOC去控制PMSM电机。FOC代码参考的是灯哥的教材DengFOC官方文档。1、配置TIM1高级定时器 2、foc.c代码/**foc.c**Createdon:Dec11,2024*Author:M......
  • ADCS8182替代AD7608,真双极性同步采样8ch、18bit模数转换芯片
    ADCS8182采用5V单电源供电,可以处理±10V和±5V真双极性输入信号,同时所有通道均能以高达200kSPS的吞吐速率采样。输入箝位保护电路可以耐受最高达±16.5V的电压。无论以何种采样频率工作,ADCS8182的模拟输入阻抗均为1MΩ。它采用单电源工作方式,具有片内滤波和高输入阻抗,因此......
  • 异步任务与定时任务:提升Web应用性能的利器
    引言在现代Web开发中,用户体验的重要性越来越显著。为了优化网站性能,处理长时间运行的任务变得不可或缺。通过异步任务和定时任务,我们可以将耗时的操作放到后台进行执行,从而提升前端响应速度与用户体验。依据“网站优化的第二定律”,合理使用异步和定时任务能够显著减少用户等待......
  • 三相异步电动机为什么能够旋转?
    三相异步电动机,作为一种广泛应用于工业、农业及其他领域的电动机,其工作原理的理解对于工程技术人员以及相关从业者来说至关重要。一、三相异步电动机的基本结构三相异步电动机主要由定子、转子和机壳组成。定子是电动机的静止部分,包含多个电磁线圈,而转子则是可旋转的部分,通常......
  • ShaderGraphs和ASE对比
      大家好,我是阿赵。  之前我写了一些关于Unity可视化Shader编写工具AmplifyShaderEditor(简称ASE)的使用介绍的文章。有不少网友给我留言,内容主要有2点:怎么我的Unity里面没有ASE插件?为什么要用ASE?用ShaderGraph应该会更好?  我个人的看法,使用什么工具是次要的,理解思......