网络编程---第十三课:yield,控制单线程内切换任务的模块,实现智能化遇到IO就切换,IO多路复用

本文探讨了如何利用yield在单线程中实现并发假象,但yield本身无法自动切换到其他函数执行。文章介绍了greenlet模块进行函数切换,以及gevent模块如何在遇到特定IO操作时智能切换,实现协程。同时,对比了串行执行与IO多路复用(如select、poll、epoll)在服务端和客户端的效率差异。
摘要由CSDN通过智能技术生成
学习回顾
    线程池
    队列:同一进程内的队列
        先进先出    后进先出    优先级队列
    线程池中的回调函数是谁在调用?
        线程池中的回调函数是谁调用的,和父线程没有关系
        进程池中的回调函数是父进程调用的,和子进程没有关系
    最终目的是为了提高CPU的利用率:
        在单进程里为了实现并发,线程就出来了
        在单线程里为了实现并发,协程就出来了
    并发的本质:切换+保存状态
    为什么要有协程?
        因为想要在单线程内实现并发的效果。因为cpython有GIL锁,限制了在同一个时间点只能执行一个线程
        所以想要在执行一个线程的期间,充分的利用CPU的性能
        所以才有想在单线程类实现并发的效果
        并发:切换+保存状态
        cpu是为什么要切换?
            1.因为某个程序阻塞了
            2.因某个程序用完了时间片
            很明显,解决1这个问题才能提高效率
        所以想要实现单线程的并发,就要解决在单线程内,多个任务函数中,某个任务函数遇见IO操作,马上自动切换到其他任务函数去执行
    协程:是一个比线程更加轻量级的单位,是组成线程的各个函数,协程本身没有实体。
        是单线程下的并发,又称微线程。纤
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初遇我ㄖ寸の热情呢?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值