摘要: 上一节课我们知道GIL锁导致CPython中多线程无法并行执行,之能给并发 并发实现的原理就是切换+保存 意味着使用多线程实现并发,就需要为每一个任务创建一个线程,必然增加了线程创建销毁与切换带来的开销 面临的问题:高并发情况下,由于任务数量太多导致无法开启新的线程,使得既没有实际任务要执行,也无法 阅读全文
posted @ 2019-07-08 17:22 enazede 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1、基于多进程实现并发的套接字通信,完成如下功能: 1、客户端链接功成功后,先登录,登录成功后才可以执行其他功能 2、登录成功后可以执行下载功能 3、登录成功后可以执行上传功能 ​ 4.进程队列是什么 有什么特点 5.进程间通讯有哪些方法说明优缺点 1共享文件 优点:数据量理论上没有限制 缺点:效率 阅读全文
posted @ 2019-07-08 15:07 enazede 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 一堆锁 死锁 对同一把互斥锁多次执行acquire 将导致死锁 资源被占用一直得不到释放,导致其他资源进入阻塞状况 产生死锁的情况: ​ 1:对同一把互斥锁,枷锁了多次 ​ 2:一个共享资源要访问必须具备多把锁,但是这些锁被不同线程或进程持有,就会导致相互等待对方释放资源,从而程序卡死 解决情况: 阅读全文
posted @ 2019-07-05 20:29 enazede 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 多线程 基于并发编程 进程的定义:是操作系统可以调度已经进行资源分配的基本单位,是一个资源单位,其中包含了运行这个程序所需的资源 线程的定义:是操作系统可以运算调度的最小单位,是真正的执行单位,其包含在进程当中,一个线程就是一条固定的控制流程 两者的关系:进程可以包含多个线程,同一进程中的线程共享进 阅读全文
posted @ 2019-07-04 19:31 enazede 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 生产者消费模型 模型就是解决某个问题固定方法和套路 e.g. 生产者和消费者 存在的问题 :效率不同,往往双方之间的处理速度不一样,导致双方需要等待对方 tips: 1将双方解开耦合,让不同进程负责不同的任务 2提供一个共享的容器,来平衡双方的能力,之所以用进程队列是因为可以在进程之间共享 case 阅读全文
posted @ 2019-07-04 18:16 enazede 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 守护进程 了解 什么是守护进程 在python中 守护进程也是一个进程, 默认情况下 主进程即使代码执行完毕了 也会等待子进程结束才会结束自己 当一个进程b设置为另一进程a的守护进程时 a是被守护 b是守护进程 特点是: 当被守护a 结束时,即使b的任务没有完成也会随之结束 案例: 进程安全问题 当 阅读全文
posted @ 2019-07-04 16:28 enazede 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-07-03 21:00 enazede 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-07-03 17:39 enazede 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 并发编程 什么是并发编程 并发指的是多个任务同时被执行,并发编程指的是编写支持多任务的应用程序 并发编程中重要的概念 1串行:自上而下顺序执行 2并发:多个任务同时执行,但是本质上是在不同进程间切换执行,由于速度快所以感觉是同时进行的 3并行:是真正的同时进行,必须具备的是多核CPU,有几个核心就能 阅读全文
posted @ 2019-07-02 19:19 enazede 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 只有TCP有占包问题,UDP不会出现 111、应用程序看到的数据是一个整体(流),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,容易出现粘包的问题。TCP协议层会把构成整条消息的数据段排序完成后呈现在内核缓冲区 222、UDP是面向消息的协议,每个UDP段都是一条消息,应用程 阅读全文
posted @ 2019-06-27 17:29 enazede 阅读(778) 评论(0) 推荐(0) 编辑