摘要:
主要内容: 一、IO模型比较分析 二、selectors模块 1️⃣ IO模型比较分析 1、前情回顾: 上一小节中,我们已经分别介绍过了IO模型的四个模块,那么我想大多数都会和我一样好奇, 阻塞IO和非阻塞IO、多路复用IO和异步IO到底有什么区别? 2、 先来回答第一个区别:阻塞和非阻塞的区别,调 阅读全文
摘要:
主要内容: 一、IO模型介绍 二、阻塞IO 三、非阻塞IO 四、多路复用 五、异步IO 1️⃣ IO模型介绍 1 何为同步、异步、阻塞和非阻塞 同步: 异步: 阻塞: 非阻塞: 小结: 2、IO模型分类 一般分为五类: IO发生时涉及的对象和步骤: 以read为例,它主要涉及两个系统对象,一个调用这 阅读全文
摘要:
主要知识点: 一、协程介绍 二、greenle模块 三、gevent模块 1️⃣ 协程介绍 1、前言+回顾 1.1 并发的本质 实例: 第二点:第一种情况的切换。在任务一遇到io情况下,切到任务二去执行,这样就可以利用任务一阻塞的时间 完成任务二的计算,效率的提升就在于此。 注意:单线程下,我们不可 阅读全文
摘要:
主要内容: 一、异步调用与回调机制 二、多线程实现并发的套接字通信 三、gevent实现并发的套接字通信 1️⃣ 异步调用与回调机制 提交任务的两种方式 1、同步调动 2、异步调用 2.1 什么是异步调用? 提交完任务后,不在原地等待任务执行完毕。 2.1 实例: 3、回调函数 3.1 含义:可以为 阅读全文
摘要:
主要内容: 一、信号量 二、Event事件 三、定时器 四、线程queue 五、进程池与线程池 1️⃣ 信号量 1、信号量的理解 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行。 例如:把互斥锁比作是合租房屋的人去抢一个厕 阅读全文
摘要:
主要内容: 一、GIL全局解释器锁 二、死锁现象和递归锁 1️⃣ GIL全局解释器锁 1、Cpython的GIL解释器锁的工作机制 #test.py内容 import os,time print(os.getpid()) time.sleep(1000) #打开终端执行 python3 test.p 阅读全文
摘要:
主要内容: 一、Thread对象的其他属性或方法 二、守护线程 三、互斥锁 1️⃣ Thread对象的其他属性或方法 1、Thread实例对象的方法 isAlive():返回线程是否活动的。 getName():返回线程名。 setName():设置线程名。 2、threading模块提供的一些方法 阅读全文
摘要:
本节主要知识点包括三个方面 一、线程的含义 二、进程和线程的区别 三、开启进程的两种方式 1️⃣ 什么是线程和多线程? 1、在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程。 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu), 而一条流水线必须属于 阅读全文
摘要:
主要知识点:互斥锁、队列和生产者消费者模型 一、互斥锁 1、进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱。 如下实例: 那么,如何控制呢?答案就是加锁处理。 2、互斥锁的理解: 互斥锁的意思就是互相排斥, 阅读全文
摘要:
基于多进程实现并发的套接字通信和守护进程 一、关于进程之间内存的空间隔离 看以下的两个实例,比较一下区别: 实例一: 实例二: 由实例一和实例二可知:不同进程之间存在空间上的隔离,不会相互影响。 二、多进程通信 多进程通信以实例方式呈现,分为客户端和服务端。 客户端.py #!/usr/bin/en 阅读全文