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

个人网站可以备案苏州seo营销

个人网站可以备案,苏州seo营销,北京网络平台公司有哪些,网络平台怎么创建需要多少钱文章目录 1. 同步与异步函数的对比1.1 同步函数1.2 异步函数1.3 对比 2. 管理多个协程与异常处理2.1 并发执行多个协程2.2 错误处理2.3 任务取消 本文将探索Python中同步与异步编程的基本概念及其区别。还会详细介绍如何使用asyncio库来有效管理协程,包括任务的创建…

文章目录

    • 1. 同步与异步函数的对比
      • 1.1 同步函数
      • 1.2 异步函数
      • 1.3 对比
    • 2. 管理多个协程与异常处理
      • 2.1 并发执行多个协程
      • 2.2 错误处理
      • 2.3 任务取消

本文将探索Python中同步与异步编程的基本概念及其区别。还会详细介绍如何使用asyncio库来有效管理协程,包括任务的创建、错误处理和取消等功能。


1. 同步与异步函数的对比

1.1 同步函数

在同步模式下,如果some_function()进行耗时的I/O操作,比如网络请求或文件读取,程序将在此函数执行期间停止执行,直到操作完成。

def fetch_data():data = some_sync_function()  # 耗时操作return data# 同步调用
data = fetch_data()

这种模式下,程序完全阻塞直到some_sync_function()执行完成。

1.2 异步函数

使用asyncawait创建的异步函数可以在执行中暂停并继续执行,无需阻塞程序:

async def fetch_data():data = await some_async_function()  # 异步操作return data

在这种模式下,await关键字使得fetch_datasome_async_function()执行期间暂停,将控制权交还给事件循环,允许执行其他操作。

1.3 对比

特性同步编程异步编程
执行方式阻塞式执行非阻塞式执行
资源利用效率较低,CPU等待I/O高效,CPU可以处理其他任务
复杂性相对简单较复杂,需要理解事件循环
适用场景简单脚本、小工具I/O密集型应用,如Web服务器
控制流线性,易于理解需要使用回调、promises等
库/框架无特殊需求需要支持异步的库(如asyncio
性能受限于I/O等待时间可大幅提高响应速度和吞吐率
错误处理直接处理需要特殊机制处理异常

同步和异步的对比图
在这里插入图片描述

2. 管理多个协程与异常处理

在使用asyncio进行并发编程时,不仅需要管理多个协程的并发执行,同时也需要妥善处理可能出现的错误和取消正在运行的任务。

2.1 并发执行多个协程

asyncio.gather是一个非常实用的函数,它允许同时启动多个协程,并等待所有协程执行完成。这样可以有效地利用时间,因为它允许多个协程并行执行而非顺序执行。

import asyncioasync def count():print("One", end=' ')  # 确保在打印后不自动换行await asyncio.sleep(1)print("Two", end=' ')  # 同样不换行async def main():await asyncio.gather(count(), count(), count())asyncio.run(main())
# 输出:One One One Two Two Two 

count协程会先打印“One”,然后等待1秒,接着打印“Two”。由于使用了asyncio.gather,三个count协程会并行执行,因此总的等待时间仅为1秒,而不是三次各自等待1秒。

加餐:end是干嘛用的

默认情况下,print函数会在每次调用后添加一个换行符,但如果设置end参数为一个空字符串'',那么输出将不会在末尾添加换行符。

2.2 错误处理

asyncio中处理错误是确保程序健壮性和响应性的关键。错误处理通常通过使用try-except块来实现,这允许程序在遇到预期内的异常时优雅地恢复。

import asyncioasync def error_task():raise ValueError("Something went wrong!")async def main():task = asyncio.create_task(error_task())try:await taskexcept ValueError as e:print(f"Caught an error: {e}")asyncio.run(main())
# 输出:Caught an error: Something went wrong!

在这个例子中,error_task协程故意抛出一个ValueError异常。在main函数中,使用try-except块来捕获并处理这个异常。这样的错误处理机制确保了即使在异步任务失败时,程序也能继续运行,从而提高了整体的容错性。

asyncio.create_task 简介

asyncio.create_task()函数用于并行运行协程。此函数将协程封装成一个Task对象,并安排其在事件循环中执行。

2.3 任务取消

asyncio中,取消任务是异步编程中的另一个重要方面,它允许开发者在任务不再需要时终止执行,从而释放资源。

import asyncioasync def cancellable_task():try:print("Task starts")await asyncio.sleep(10)  # 假设这是一个长时间运行的任务print("Task completed")except asyncio.CancelledError:print("Task was cancelled!")async def main():task = asyncio.create_task(cancellable_task())await asyncio.sleep(1)  # 给任务一点时间开始执行task.cancel()  # 取消任务try:await taskexcept asyncio.CancelledError:print("Caught cancellation in main")asyncio.run(main())
# 输出:
# Task starts
# Task was cancelled!
# Caught cancellation in main

在这个例子中,cancellable_task开始执行后,通过调用task.cancel()来请求取消任务。任务中的asyncio.sleep调用会在收到取消请求时抛出一个asyncio.CancelledError。在任务的try-except块中捕获这个异常,可以执行任何必要的清理工作。在main函数中,等待任务完成,并处理可能由任务取消引发的异常。


参考:Synchronous vs Asynchronous Programming: Models, Differences, Use Cases
推荐: python 错误记录

http://www.yayakq.cn/news/119029/

相关文章:

  • 哪里有网站制作服务集团网站建设特色
  • 网站多久才会被收录手机网站制作公司选哪家
  • 关于房产的网站有哪些网页上做ppt的网站
  • 阿里云免费网站大连建设网水电
  • 做网站的s标的软件班级网站建设的范围
  • 枣庄网站建设装修公司网站建设
  • mv网站源码如何将vs做的网站备份出来
  • 做好我局门户网站建设工作wordpress 上传开发
  • 巴中网站建设培训班建一个所在区域网站需要多少资金
  • 全网vip视频网站建设网站后台如何添加新闻
  • 国际军事新闻西安关键词优化平台
  • 网站空间怎么使用最近的新闻热点事件
  • 做网站App价格多少南京建网站公司
  • 网站建站网站怎么样石家庄百度推广家庄网站建设
  • 武安市网站建设费用营销策略4p
  • 西安企业免费建站wordpress更改上传的大小
  • 哪个网站可以做付邮免费送活动易趣网的网站架构
  • 网络科技公司 网站建设诸暨做幕墙连接件的公司
  • 南宁网站制作建设网站怎么搞
  • 哈尔滨网站建设外包公司网站建设计划书范本
  • 网站建设心得.doc进行网站开发前 需要干什么
  • 单词优化和整站优化百度关键词优化首选667seo
  • o2o网站开发方案wordpress模板最新
  • 网站制作费用预算表百度云盘做网站空间
  • 公司网站建设哪家好苏州公司的网站建设
  • 做淘宝客网站多少钱直播网站开发费用
  • 哪些网站是可以做网络推广的高端的佛山网站建设
  • 建购物网站的详细步骤开发商破产清算赔偿五大顺序
  • 网站怎么解析职业学院网站建设
  • 商丘做网站多少钱托者设计吧官网