协成 协成驱动方式 事件驱动

本文深入探讨了多线程和流在网络编程中的应用,重点关注协成的概念,包括其寄存器、优缺点和背景知识。此外,还介绍了三种协成实现方式:yield、greenlet和gevent,并给出了详细的运行结果分析,最后讲解了事件驱动编程的实践应用。
摘要由CSDN通过智能技术生成

多线程 流 网络编程—重点

  1. 协成概念------寄存器 优缺点 概念 背----重点
协成(微线程,纤程)---(Coroutine)
    线程---操作系统调度
    协成----程序根据需要调度
    概念:
        线程是系统级别的它们由操作系统调度,而协程则是程序级别的由程序根据需要自己调度。
        在一个线程中会有很多函数,我们把这些函数称为子程序,
        在子程序执行过程中可以中断去执行别的子程序,而别的子程序也可以中断回来
        继续执行之前的子程序,这个过程就称为协程。
        也就是说在同一线程内一段代码在执行过程中会中断然后跳转执行别的代码,
        接着在之前中断的地方继续开始执行,类似于yield操作
    寄存器:
        协程拥有自己的‘寄存器上下文和栈’。
        协程调度切换时,将寄存器上下文和栈保存到其他地方,
        在切回来的时候,恢复先前保存的寄存器上下文和栈。
        因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合)
        ,每次过程重入时,就相当于进入上一次调用的状态,
        换种说法:进入上一次离开时所处逻辑流的位置。
    优缺点:
        协程的优点:
  (1)无需线程上下文切换的开销,协程避免了无意义的调度,由此可以提高性能
        (但也因此,程序员必须自己承担调度的责任,
        同时,协程也失去了标准线程使用多CPU的能力)
  (2)无需原子操作锁定及同步的开销-----互斥锁
  (3)方便切换控制流,简化编程模型
  (4)高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。
        所以很适合用于高并发处理。

        协程的缺点:
  (1)无法利用多核资源:协程的本质是个单线程,
        它不能同时将 单个CPU 的多个核用上,协程需要和进程配合才能
        运行在多CPU上.当然我们日常所编写的绝大部分应用都没有这个必要,
        除非是cpu密集型应用。
  (2)进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序
#1.----举例
def a():
    for i in range(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值