当前位置: 首页 > news >正文

驾校做网站网站seo置顶

驾校做网站,网站seo置顶,工商网站备案查询,万户网络做网站怎么样1. 异步编程 异步编程是一种编程范式,用于处理程序中需要等待异步操作完成后才能继续执行的情况。异步编程允许程序在执行耗时的操作时不被阻塞,而是在等待操作完成时继续执行其他任务。这对于处理诸如文件 I/O、网络请求、定时器等需要等待的操作非常有…

1. 异步编程

  异步编程是一种编程范式,用于处理程序中需要等待异步操作完成后才能继续执行的情况。异步编程允许程序在执行耗时的操作时不被阻塞,而是在等待操作完成时继续执行其他任务。这对于处理诸如文件 I/O、网络请求、定时器等需要等待的操作非常有用。
在这里插入图片描述
使用异步编程通常可以带来以下好处:

  • 提高程序效率和性能:异步编程使得程序在执行耗时的 I/O 操作(如网络请求、文件读写、数据库查询等)时不会被阻塞,减少了等待时间,充分利用了系统资源。
  • 改善用户体验:在 Web 开发中,异步编程可以确保服务器在处理大量并发请求时能够快速地响应用户,从而提高了 Web 应用的响应速度和用户体验。

2 async/await和asyncio包

2.1 异步函数的定义

  在Python中实现异步函数的定义需要两个关键字(asyncawait)。

  • asyncasync关键字声明一个异步函数。它可以在执行过程中暂停并允许其他代码执行。当你调用一个异步函数时,它会立即返回一个协程对象而不是实际的结果。异步函数适用于执行耗时的I/O操作,例如网络请求、文件读写、数据库查询等。这些操作通常涉及到等待外部资源的响应或者数据的传输,而在等待的过程中,CPU可以执行其他任务,从而提高程序的效率。
  • awaitawait关键字在 Python 中用于等待一个异步操作完成。当调用异步函数时,使用await关键字可以暂时挂起当前的异步函数的执行,将CPU控制权还给事件循环(Event Loop)。接着事件循环可以将执行权转移到其他任务上,而不是一直等待当前的异步函数完成。当被await的异步操作完成后,事件循环会通知原来的异步函数,使得它可以继续执行后续的操作。

在Python中异步函数的定义需要同时满足以下两个条件:

  • 使用async def关键字声明函数。
  • 函数内部包含异步操作,并且使用了await关键字等待异步操作完成。如果一个函数中只使用了async def声明,但其中任何异步操作,也没有使用await关键字,那么它实际上就是一个普通的同步函数,而不是一个异步函数。

2.2 事件循环

  事件循环(Event Loop)是异步编程中负责管理和调度异步任务执行的机制。事件循环的工作原理类似于一个持续运行的循环,它在每一轮循环中都会执行以下几个步骤:

  • 等待任务就绪: 事件循环会等待所有注册的异步任务就绪,包括等待 I/O 操作完成、等待计时器超时等。
  • 选择就绪任务:一旦有任务就绪,事件循环会选择其中一个任务进行执行。
  • 执行任务:事件循环会执行所选择的就绪任务,直到任务完成或者遇到await关键字,需要暂时挂起任务的执行。
  • 挂起任务:如果任务遇到await关键字,它会将控制权交还给事件循环,并等待 await后面的异步操作完成。
  • 继续执行其他任务:在等待await的异步操作完成的过程中,事件循环会继续执行其他就绪的任务,从而实现了并发执行的效果。
  • 异步操作完成: 当一个 await 后面的异步操作完成后,事件循环会通知原来的任务,使得它可以继续执行后续的操作。

2.2 asyncio

asyncio包python中常用的异步编程框架,这里使用该框架完成一个简单的异步编程案例,具体如下:


import time
import datetime
import asyncio
async def async_read_file():print("async读文件开始:",datetime.datetime.fromtimestamp(time.time()))await asyncio.sleep(20)print("async读文件完成:",datetime.datetime.fromtimestamp(time.time()))def computer():print("普通计算密集型任务:",datetime.datetime.fromtimestamp(time.time()))sum=0for i in range(1000000):if i%250000==0 and i!=0:print("普通计算密集型任务正在执行:",datetime.datetime.fromtimestamp(time.time()))for j in range(500):sum+=i+j-2*jprint("普通计算密集型任务完成:",datetime.datetime.fromtimestamp(time.time()))def computer2():print("普通CPU密集型任务:",datetime.datetime.fromtimestamp(time.time()))sum=0for i in range(1000000):if i%250000==0 and i!=0:print("普通CPU密集型任务正在执行:",datetime.datetime.fromtimestamp(time.time()))for j in range(5000):sum+=i+j-2*jprint("普通CPU密集型任务完成:",datetime.datetime.fromtimestamp(time.time()))async def asy_main():task=loop.create_task(async_read_file()) # 创建一个任务,并添加到事件循环,等待执行task2=loop.run_in_executor(None,computer)# 将普通函数read_file添加到事件循环中,等待执行task3=loop.run_in_executor(None,computer2)# 将普通函数read_file2添加到事件循环中,等待执行await task3await task2await taskloop=asyncio.get_event_loop() # 创建一个事件循环
loop.run_until_complete(asy_main())

其执行结果如下:

普通计算密集型任务: 2024-05-15 18:29:19.702689
普通CPU密集型任务: 2024-05-15 18:29:19.708280
async读文件开始: 2024-05-15 18:29:19.738654
普通计算密集型任务正在执行: 2024-05-15 18:29:21.441072
普通计算密集型任务正在执行: 2024-05-15 18:29:23.192585
普通计算密集型任务正在执行: 2024-05-15 18:29:24.936979
普通计算密集型任务完成: 2024-05-15 18:29:26.712930
普通CPU密集型任务正在执行: 2024-05-15 18:29:32.539679
async读文件完成: 2024-05-15 18:29:39.752731
普通CPU密集型任务正在执行: 2024-05-15 18:29:41.813872
普通CPU密集型任务正在执行: 2024-05-15 18:29:51.103737
普通CPU密集型任务完成: 2024-05-15 18:30:00.433402

Tips:虽然当下的执行结果中写完成了computer()的计算,后完成了computer2()的计算,但多次执行上述程序的时候也出现了两个函数交替执行的结果。

参考资料

  1. https://cloud.tencent.com/developer/article/1795692
http://www.shuangfujiaoyu.com/news/59268.html

相关文章:

  • 大连网络营销公司广州seo成功案例
  • 中国app开发公司排名搜索seo神器
  • 山海关建设局网站海外品牌推广
  • 融安有那几个网站做的比较好的淘宝店铺推广方式有哪些
  • 做网站需要注意多少页网站提交入口大全
  • 加盟网站做推广怎么收费百度地图推广怎么做的
  • 实体店会员卡管理系统厦门seo总部电话
  • 找大学生做家教的网站整合营销活动策划方案
  • 重庆网站建设服务价格网站怎么搭建
  • 眉山网站建设公司百度市场应用官方app
  • 简述企业网站的建设过程保定seo建站
  • 网站怎么做定位功能搭建网站教程
  • 做网站自己seo推广排名软件
  • 做电脑租赁网站广州网站优化推广
  • 做女朋友的网站seo优化内页排名
  • 深圳较便宜的网站建设北京搜索引擎推广服务
  • 文本文档做网站优秀的软文
  • b2c开通手机网站多少钱社群营销的案例
  • WordPress登录界面个性化网站优化的方法
  • 深圳设计培训学校排行seo公司资源
  • 响应式门户网站模板怎么推广app让人去下载
  • 英文网站接单做翻译电商怎么做推广
  • 嵊州市住房和建设局网站广州营销网站建设靠谱
  • 龙岗网站推广50个市场营销经典案例
  • 如何上传网站到云服务器营销型网站建站推广
  • 17. 整个网站建设中的关键是seo网站优化服务商
  • 嘉兴自助建站模板西安疫情最新消息1小时内
  • xampp可以做网站吗网站seo优化运营
  • 济南网站建设泉诺自媒体引流推广
  • 专门做任务的网站产品软文撰写