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

哪些网站做面试题齐齐哈尔城市建设档案馆网站

哪些网站做面试题,齐齐哈尔城市建设档案馆网站,html5做网站,网站推广花费多少钱文章目录 协程怎么创建一个携程?怎么运行协程asyncio并行await什么是“在协程中挂起当前任务的执行” 协程 这个协程,可千万别打错了字。否则说不定就得去旅游了。 Python中的协程(Coroutine)是一种用户态轻量级线程&#xff0c…

文章目录

  • 协程
  • 怎么创建一个携程?
  • 怎么运行协程
  • asyncio
  • 并行
  • await
  • 什么是“在协程中挂起当前任务的执行”


协程

这个协程,可千万别打错了字。否则说不定就得去旅游了。

Python中的协程(Coroutine)是一种用户态轻量级线程,由程序自身控制调度,能够在单线程内实现并发执行。它通过协作式多任务机制,在特定位置主动让出控制权,从而在等待I/O操作时切换到其他任务,显著提升程序效率。

怎么创建一个携程?

async def my_coroutine():print("协程开始运行")await asyncio.sleep(1)  # 模拟耗时操作print("协程执行完毕")

在这里插入图片描述
当函数定义时,增加async关键字时,这个函数名(my_coroutine)代表的还是一个函数。但函数的执行(my_coroutine())返回的将是一个协程对象(coroutine object)。

怎么运行协程

协程虽然看起来很像一个函数,但它其实不能像函数那样被调用。要想调用协程,得用不一样的方式。

import asyncio
asyncio.run(my_coroutine())

在这里插入图片描述

asyncio

Python的asyncio是一个基于事件循环的异步I/O框架,通过协程实现高效并发编程。其核心是事件循环(Event Loop),负责调度协程任务,当遇到await表达式时暂停当前协程,转而执行其他任务,实现非阻塞操作。与传统多线程相比,asyncio通过单线程内的协程切换避免了锁竞争和线程切换开销,特别适合I/O密集型场景(如网络请求、数据库访问)。

asyncio.run(my_coroutine())

就是在启动一个协程。

一个细节。

asyncio.run是需要引入包的,即(import asyncio)

而使用async定义函数,则不需要引入包。

asyncio是包名

async是关键字

并行

从上面这个例子,好像并没有看到并发的效果啊。和普通的for循环没啥区别啊。

asyncio.run(my_coroutine())
print("协程开始运行--主线程")
print("协程执行完毕--主线程")

在这里插入图片描述

也不行~

在这里插入图片描述

👆这次终于实现了并行。

import asyncioasync def task(name, delay):print(f"{name} 开始")await asyncio.sleep(delay)print(f"{name} 完成")async def main():# 创建两个并行任务task1 = asyncio.create_task(task("任务A", 2))task2 = asyncio.create_task(task("任务B", 1))await task1await task2asyncio.run(main())

await

await也是关键字,不需要引入什么包

await 是 Python 异步编程中的关键字,用于在协程中挂起当前任务的执行,将控制权交还给事件循环,直到其后的可等待对象(如协程、Task 或 Future)完成操作并返回结果。其核心作用在于实现非阻塞式并发,避免因 I/O 等待(如网络请求、文件读写)导致线程停滞。

什么是“在协程中挂起当前任务的执行”

在协程中“挂起当前任务的执行”是指将协程的执行状态(如局部变量、程序计数器等)临时保存,并将控制权交还给调度器或事件循环,以便执行其他任务。这一机制的核心在于实现非阻塞的并发操作:当协程遇到I/O等待或显式挂起指令(如awaitsuspend)时,其执行被暂停,但线程不会因此阻塞,而是继续处理其他协程或任务。

实现机制

  1. 状态保存:协程挂起时,其当前执行位置、局部变量等上下文信息会被存储到堆内存或专用数据结构(如Continuation对象)中,确保后续恢复时能无缝衔接。
  2. 控制权转移:挂起后,事件循环或调度器会切换到其他就绪的协程,最大化利用线程资源。
  3. 恢复触发:当挂起条件满足(如I/O完成或定时结束),调度器通过回调或事件通知恢复协程,从保存点继续执行。

作用与意义

  • 避免线程阻塞:例如,在Kotlin中调用suspend函数或在Python中使用await时,协程挂起允许线程处理其他任务,提升并发效率。
  • 简化异步编程:通过同步代码风格实现异步逻辑,减少回调嵌套,增强代码可读性。
  • 资源高效利用:单线程可管理数千协程,适用于I/O密集型场景(如网络请求、文件操作)。

需注意,挂起操作需依赖语言或框架的支持(如Python的asyncio、Kotlin的协程库),且需避免在协程中调用阻塞式API,否则会破坏非阻塞特性。

http://www.dtcms.com/wzjs/592265.html

相关文章:

  • 网站集约化建设的意义瑞安建设网站
  • 禁止国内ip访问 网站4414站长平台
  • 微博分享的网站怎么做泰安有哪些景点
  • 购买主机可以做网站吗上海做网站吧
  • 西宁市建设网站多少钱中国黄金集团j建设公司网站
  • 沈阳h5网站建设wordpress 简码 文章图片
  • 什么网站做禽苗好的网站Pdf书籍网站建设
  • 旅游网站模板源码wordpress 分页 插件下载
  • 格泰网站建设全球网站流量排名100
  • 如何做网站 seo天津大学生专业做网站
  • 响应式网站 解决方案网站建设必知
  • 查网站邯郸微信托管
  • 网站后台下载网站设计psd模板
  • 招聘预算网站怎么做九九建筑网66kv架空线路设计视频讲座
  • 杭州企业自助建站请收网址999938
  • 重庆公司网站设计制作开发公司办公电脑申请怎么写
  • 电脑买编程代码做网站电子商务网站推广策划方案
  • 简述建设网站的基本流程一般使用的分辨率是多少
  • 企业网站备案费用超级采购小程序怎么注册
  • 建设大型购物网站网络公司给我们做的网站_但是我们不知道域名是否属于我们
  • 北京建设工程联合验收网站动画小视频制作神器
  • 宜春市住房和城乡建设局网站网站内页修改关键字
  • 哪些是asp网站专业vi设计哪家好
  • 网站怎样注册备案天津做网站找哪家公司好
  • 太原电商网站设计shopify seo
  • 网站开发进度确认单网站建设的钱计入什么科目
  • 做电影下载网站成本企业网络搭建案例
  • 制作公司网站在公账汇款时用途备注什么北仑网站建设培训学校
  • 网页模板王襄阳seo招聘
  • 天津网站优化排名营销型网站设计房地产