Python协程如何实现最小资源消耗的多任务处理?
- 内容介绍
- 相关推荐
本文共计2223个文字,预计阅读时间需要9分钟。
协程,又称微线程,纤程。协程是Python中实现多任务的一种方式,只比线程更小,占用资源更少,执行单个单元。为何说它是一个执行单元,因为'协程'的运行依赖于操作系统内核的支持。
协程,又称微线程,纤程。英文名 Coroutine。
协程是 Python 中另外一种实现多任务的方式,只不过比线程更小,占用更小执行单元(理解为需要的资源)。
为啥说它是一个执行单元,因为它自带 CPU 上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。
通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的,并且切换的次数以及什么时候再切换到原来的函数都由开发者自己确定。
协程和线程差异
在实现多任务时, 线程切换从系统层面远不止保存和恢复 CPU上下文这么简单。
操作系统为了程序运行的高效性每个线程都有自己缓存 Cache 等等数据,操作系统还会帮你做这些数据的恢复操作,所以线程的切换非常耗性能。
但是协程的切换只是单纯的操作 CPU 的上下文,所以一秒钟切换个上百万次系统都抗得住。
之前我们讲过 yield 关键字,现在就用它来实现多任务。
本文共计2223个文字,预计阅读时间需要9分钟。
协程,又称微线程,纤程。协程是Python中实现多任务的一种方式,只比线程更小,占用资源更少,执行单个单元。为何说它是一个执行单元,因为'协程'的运行依赖于操作系统内核的支持。
协程,又称微线程,纤程。英文名 Coroutine。
协程是 Python 中另外一种实现多任务的方式,只不过比线程更小,占用更小执行单元(理解为需要的资源)。
为啥说它是一个执行单元,因为它自带 CPU 上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。
通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的,并且切换的次数以及什么时候再切换到原来的函数都由开发者自己确定。
协程和线程差异
在实现多任务时, 线程切换从系统层面远不止保存和恢复 CPU上下文这么简单。
操作系统为了程序运行的高效性每个线程都有自己缓存 Cache 等等数据,操作系统还会帮你做这些数据的恢复操作,所以线程的切换非常耗性能。
但是协程的切换只是单纯的操作 CPU 的上下文,所以一秒钟切换个上百万次系统都抗得住。
之前我们讲过 yield 关键字,现在就用它来实现多任务。

