IO多路复用 基于IO的单线程并发 协程
https://www.cnblogs.com/nianshaoyouwei/p/9642991.html
一. IO多路复用
检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写)
操作系统检测socket是否发生变化,有三种模式:
select:最多1024个socket;循环去检测.
poll:不限制监听socket个数;循环去检测(水平触发).
epoll:不限制监听socket个数;回调方式(边缘触发).
Python模块:
select.select
select.epoll
二.基于IO多路复用+socket实现并发请求
IO多路复用+socket非阻塞+捕获异常(BlockingIOError)
此方法称为基于事件循环实现的异步非阻塞框架(非阻塞:不等待 异步:执行完某个人物后自动调用我给他的函数.)
python中开源模块 Twisted
三.协程.
1.什么是协程
协程也可以称为"微线程",就是开发者控制线程执行流程,控制先执行某段代码然后再切换到另外函数执行代码...来回切换.
2.协程可以提高并发吗
协程自己本身无法实现并发,但协程+IO切换性能可以提高.
3.单线程提高并发:
协程+IO切换:gevent
基于事件循环的异步非阻塞框架:Twisted
4.手动实现协程:yield关键字生成器
def f1(): print(11) yield print(22) yield print(33) def f2(): print(55) yield print(66) yield print(77) v1 = f1() v2 = f2() next(v1) # v1.send(None) next(v2) next(v1) next(v2) next(v1) next(v2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2018-09-10 进程和线程的区别