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

python一点通:coroutine (协程)是什么和重要知识点?

协程已经成为Python用于编写并发和异步代码的重要工具之一。在这篇博客文章中,我们将深入探讨协程是什么,它们的优点,以及它们与传统的线程和进程有何不同。

什么是协程?

协程是用于合作式多任务处理的子程序(或函数)的泛化。它们允许函数有多个入口和出口点,使它们能够“暂停”和“恢复”执行。

  1. 如何定义和使用协程
    定义:协程看起来像常规函数,但是使用async def语法定义。
async def my_coroutine():
  1. 暂停与恢复:await关键字允许协程被暂停,为其他协程的运行提供机会。一旦等待的任务完成,协程会从暂停的地方恢复。
async def another_coroutine():print("开始")await asyncio.sleep(1)print("1秒后结束")
  1. 执行:协程不能直接调用。它们需要使用事件循环进行“调度”,例如asyncio中的循环。
import asyncioasyncio.run(another_coroutine())
  1. 任务:要并发运行多个协程,可以将它们封装在Task对象中。
task1 = asyncio.create_task(coroutine1())
task2 = asyncio.create_task(coroutine2())

协程的优点

协程在I/O-bound任务上表现出色。它们允许高效的并发,而无需使用线程或进程。当等待某个操作(如网络请求)而不阻塞其他操作时,这特别有用。

生成器和协程的注意事项

在现代的async/await语法(Python 3.5中引入)之前,协程是使用生成器函数和yield关键字构建的。尽管现在async/await更为普遍,但基于生成器的协程在特定上下文中仍然具有相关性。

协程 vs. 线程和进程

区分协程、线程和进程非常关键:

线程和进程由操作系统管理,并且可以在多核CPU上同时运行。
协程提供合作式多任务处理,一次只运行一个协程,但可以放弃控制权,让其他协程运行。协程之间的轻量级上下文切换使它们对I/O-bound任务非常高效。

英文

阅读

AI好书推荐

AI日新月异,但是万丈高楼拔地起,离不开良好的基础。您是否有兴趣了解人工智能的原理和实践? 不要再观望! 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写,这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者,本书都能满足您的需求。 那为什么还要等呢?

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

http://www.lryc.cn/news/199127.html

相关文章:

  • QCC51XX-QCC30XX系列开发教程(实战篇) 之 12.1-空间音频相关模块的概述
  • Servlet的生命周期
  • 2.4 如何在FlinkSQL使用DataGen(数据生成器)
  • Gin + Ant Design Pro JWT认证
  • canvas实现图片标注,绘制区域
  • SELECT COUNT(*) 会造成全表扫描吗?
  • python考前复习(90题)
  • 根据SpringBoot Guides完成进行示例学习(详细步骤)
  • waf、yakit和ssh免密登录
  • 【AIGC核心技术剖析】大型语言和视觉助手——LLaVA(论文+源码)
  • IBM的WAS简介与基本使用手册
  • Deno 快速入门
  • 【计算机网络笔记】OSI参考模型基本概念
  • ConnectTimeout和ReadTimeout所代表的意义
  • 使用Python计算平面多边形间最短距离,数据需要从excel表格中导入
  • 华为数通方向HCIP-DataCom H12-831题库(多选题:1-20)
  • CCC数字钥匙设计【NFC】--通过NFC进行车主配对Phase3
  • 开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单
  • 为什么嵌入通常优于TF-IDF:探索NLP的力量
  • oracle-AWR报告生成方法
  • 笙默考试管理系统-MyExamTest----codemirror(37)
  • 【Unity3D编辑器拓展】Unity3D的IMGUI、GUI、GUILayout、EditorGUI、EditorGUILayout、OnGUI【全面总结】
  • 11. 机器学习 - 评价指标2
  • Nginx的代理和负载均衡
  • Oracle发布支持Vscode的Java插件
  • 互联网Java工程师面试题·Java 总结篇·第九弹
  • SpringCloud学习笔记-gateway网关自定义全局过滤器
  • 数字图像处理实验记录四(图像的空间域增强-平滑处理)
  • 怎么使用LightPicture开源搭建图片管理系统并远程访问?【搭建私人图床】
  • pytorch_神经网络构建4