pyhon3面向对象.10协程与异步IO(1)

概念:
线程:系统级别的,它们由操作系统调度cpu.
协程:程序级别的,由程序根据需求自己调度。
函数:又称为子程序,是所偶语言中都是层级调用
在一个线程中由很多函数,又称为子程序,在子程序执行过程中可以终端去执行别的子程序,而别的子程序又可以终端回来继续执行之前的子程序这个过程叫做协程。也就是说在同一线程内一段代码在执行过程中断然跳转执行别的代码,接着在之前中断的地方继续开始执行。

子程序正常调用

def A():
    print('1')
    print('2')
    print('3')
    print('4')

def B():
    print('x')
    print('y')
    print('z')

A()
B()

1
2
3
4
x
y
z

如果通过协程可以实现A函数先执行一些,然后中断,再去执行B函数的一部分,中断,然后把A函数剩下的执行完,把B函数剩下的执行完。

运行原理:协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存在其他地方,在切回来时候,回复先前保存的寄存器上文和栈。因此,协程能保留上一次调用时的状态,即所有局部状态的一个特定组合,每次通过重入时候,旧相当于进入上一次调用的状态,换种说法:进入上一次离开时候所处逻辑流的位置

协程调用优点:
1.无需线程上下文切换的开学,协程避免了无意义的调度,可以提高性能。
2.无需原子操作锁定及同步的开销
3.
方便切换控制流,简化编程模型。
3.高并发高扩展低成本,在一个CPU上支持

缺点:
1.无法利用多核资源,协程的本质是个单线程,它不能同时将单个CPU的多个核用上,协程需要和进程配合才能运行在多CPU上。
2。进行阻塞操作回阻塞整个程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值