Python基础-协程

一、协程

1.概述

协程,又称微线程,也称为用户级线程,在不开辟线程的基础上完成多任务,也就是在单线程的情况瞎完成多任务,多个任务按照一定顺序交替执行,通俗理解只要在def里面只看到一个yield关键字,就表示它是协程

简单理解:协程是实现多任务的一种方式

2.协程的优点

(1)无需线程上下文切换的开销,协程避免了无意义的调度,由此可以提高性能(但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用CPU的能力)

(2)无需原子操作锁定及同步的开销

(3)方便切换控制流,简化编程模型

(4)高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理

3.协程的缺点

(1)无法利用多核资源:协程的本质是个单线程,它不能同时将单个CPU的多个核用上,协程需要和进程配合才能运行在多CPU上

4.协程yield代码实现

(1)代码

import time

def run_001():
    while True:
        print("---run001---")
        yield
        time.sleep(0.5)

def run_002():
    while True:
        print("---run002---")
        yield
        time.sleep(0.5)

def main():
    r1 = run_001()
    r2 = run_002()
    while True:
        next(r1)
        next(r2)

if __name__ == '__main__':
    main()

(2)结果

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87910699