织梦备份网站数据,抖音小程序商城,搜索引擎网站提交入口,做招工的网站排名协程已经成为Python用于编写并发和异步代码的重要工具之一。在这篇博客文章中#xff0c;我们将深入探讨协程是什么#xff0c;它们的优点#xff0c;以及它们与传统的线程和进程有何不同。
什么是协程#xff1f;
协程是用于合作式多任务处理的子程序#xff08;或函数…协程已经成为Python用于编写并发和异步代码的重要工具之一。在这篇博客文章中我们将深入探讨协程是什么它们的优点以及它们与传统的线程和进程有何不同。
什么是协程
协程是用于合作式多任务处理的子程序或函数的泛化。它们允许函数有多个入口和出口点使它们能够“暂停”和“恢复”执行。
如何定义和使用协程 定义协程看起来像常规函数但是使用async def语法定义。
async def my_coroutine():暂停与恢复await关键字允许协程被暂停为其他协程的运行提供机会。一旦等待的任务完成协程会从暂停的地方恢复。
async def another_coroutine():print(开始)await asyncio.sleep(1)print(1秒后结束)执行协程不能直接调用。它们需要使用事件循环进行“调度”例如asyncio中的循环。
import asyncioasyncio.run(another_coroutine())任务要并发运行多个协程可以将它们封装在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 从业者本书都能满足您的需求。 那为什么还要等呢
人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典
北大出版社人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理