2019年11月5日
摘要: 一 阻塞,非阻塞,同步,异步 执行的角度: 阻塞: 程序运行时,遇到IO程序挂起,CPU被切走. 非阻塞: 程序没有遇到IO或程序遇到IO通过某种手段让cpu强行运行程序. 提交任务的角度: 同步: 提交一个任务,自任务开始运行直到此任务结束(可能有IO),返回一个返回值之后,再提交下一个任务. 异 阅读全文
posted @ 2019-11-05 22:51 Lav3nder 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 线程池: 一个容器,这个容器限制住你开启线程的数量 以时间换空间 阅读全文
posted @ 2019-11-05 22:49 Lav3nder 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: 在计算机允许范围内,开启的线程进程数量越多越好 阅读全文
posted @ 2019-11-05 22:47 Lav3nder 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 一 守护线程 守护线程 等待非守护子线程以及主线程结束之后,结束. 二 互斥锁 三 死锁现象与递归锁 1.死锁: 两个或两个以上的进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死 阅读全文
posted @ 2019-11-05 22:46 Lav3nder 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一 什么是线程 线程是执行程序的最小单位,就像一条流水线工作的过程. 开启一个进程: 在内存中开启一个进程空间,然后将主进程的所有的资源数据复制一份,然后调用线程去执行代码 进程是资源单位,线程是执行单位 二 线程 VS 进程 1. 开启进程的开销非常大,比开启线程的开销大很多 2. 开启线程的速度 阅读全文
posted @ 2019-11-05 22:43 Lav3nder 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 一 进程创建的两种方式 二 进程pid 三 验证进程之间的空间隔离 主进程和子进程之间是隔离的 四 进程对象join方法 join让主进程等待子进程结束之后,在执行主进程. 五 进程对象其他属性 阅读全文
posted @ 2019-11-05 22:37 Lav3nder 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一 进程 1. 程序: 一堆静态的代码文件 2. 进程: 一个正在运行的程序 (由操作系统操控调用交于CPU运行) 3. 串行: 所有的任务一个一个的完成 4. 并行: 多个CPU执行多个任务,真正的同时进行 5. 并发: 一个CPU完成多个任务,看起来像是同时进行 6. 阻塞: CPU遇到I/O就 阅读全文
posted @ 2019-11-05 22:33 Lav3nder 阅读(134) 评论(0) 推荐(0) 编辑
摘要: socketserver服务端 阅读全文
posted @ 2019-11-05 22:21 Lav3nder 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 一 两种发生粘包的情况: 1. 接收方没有及时接受缓存区的包,造成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包) 2. 发送端需要等缓冲区满才发送出去,造成粘包 (发送数据时间间隔很短,数据也很小,会合到一起,造成粘包) 二 粘包 阅读全文
posted @ 2019-11-05 22:20 Lav3nder 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 一 socket (套接字) 1. socket处于应用层与传输层之间,提供了一些简单的接口,避免与操作系统之间的对接,省去了相当繁琐复杂的操作. 2. socket在python中属于一个模块,通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 1.1 基于TCP协议的socket通信 服 阅读全文
posted @ 2019-11-05 22:17 Lav3nder 阅读(532) 评论(0) 推荐(0) 编辑