摘要:
IO模型介绍 我们研究的 IO 都是基于网络 IO 的 Stevens在文章中一共比较了五种IO Model: blocking IO nonblocking IO IO multiplexing signal driven IO (忽略) asynchronous IO 由signal drive 阅读全文
摘要:
协程操作 一、asyncio模块 asyncio 模块是 Python 中实现异步的一个模块,该模块在 Python3.4 的时候发布 async 和 await 关键字在 Python3.5 中引入。 因此,想要使用asyncio模块,建议 Python 解释器的版本不要低于 Python3.5 阅读全文
摘要:
协程理论 一、单线程下的并发 本节的主题是基于单线程来实现并发 即只用一个主线程(很明显可利用的CPU只有一个)情况下实现并发 为此我们需要先回顾下并发的本质: 切换+保存状态 当CPU正在运行一个任务会在两种情况下切走去执行其他的任务 该任务发生了阻塞 该任务计算的时间过长或有一个优先级更高的程序 阅读全文
摘要:
进程池和线程池 一、什么是池 无论是开设进程还是开设线程,都需要消耗资源 只不过开始线程消耗的资源比开始进程相对少一些 硬件的开发速度永远赶不上软件开发速度 我们的宗旨是保证计算机硬件正常工作的情况下最大程度的利用它 池是用来保证计算机硬件安全的情况下最大限度的利用计算机 池降低了程序的运行效率,但 阅读全文
摘要:
信号量和事件 一、信号量 信号量Semahpore(同线程一样) 互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去 如果指定信号量为3,那么来一个人获得一把锁,计数加1,当计数 阅读全文
摘要:
死锁和递归锁 一、死锁 [1]关于死锁 死锁是指两个或多个进程,在执行过程中,因争夺资源而造成了互相等待的一种现象。 即两个或多个进程持有各自的锁并试图获取对方持有的锁,从而导致被阻塞,不能向前执行,最终形成僵局。 在这种情况下,系统资源利用率极低,系统处于一种死循环状态。 [2]示例 from t 阅读全文
摘要:
GIL全局解释锁 官方对于GIL全局锁的解释 In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecod 阅读全文
摘要:
多线程 一、多线程理论 [1]什么线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程 一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 流水线的工作需要电源, 阅读全文
摘要:
进程间通信(管道) 一、关于创建管道的类 (1)创建管道的类 Pipe([duplex]) 在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象 强调一点:必须在产生Process对象之前产生管道 duplex 默认管道是全双工的,如果将du 阅读全文
摘要:
进程间通信(队列和生产者消费者模型) 一、关于进程间通信 [1]什么是进程间通信(Inter-Process Communication, IPC) 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程。 它是一种计算机编程技术,用于 阅读全文