04 2024 档案
摘要: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)是指两个或多个进程之间进行信息交换的过程。 它是一种计算机编程技术,用于
阅读全文
摘要:进程锁(互斥锁) 一、什么是进程同步(互斥锁,进程锁) 互斥锁(Mutex)是一种用于多线程编程中控制对共享资源访问的机制。 其作用是保证在同一时刻只有一个线程在访问共享资源,从而避免多个线程同时读写数据造成的问题。 互斥锁的基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完
阅读全文
摘要:守护进程 一、什么是守护进程 守护进程 (daemon) 是在计算机系统启动时就已经运行,并且一直在后台运行的一类特殊进程。 它们通常不与用户直接交互,也不接受标准输入和输出,而是在后台执行某种任务或提供某种服务。 守护进程往往是由系统管理员手动启动的,它们可以在系统启动时自动启动,一直运行在后台,
阅读全文
摘要:僵尸进程和孤儿进程 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。 子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用
阅读全文
摘要:多进程 一、多进程理论 [1]什么是进程 正在进行的一个过程或者说一个任务 而负责执行任务则是CPU (1)单任务 单核 + 多道,实现多个进程的并发执行 CPU可能在一个时间段内要完成多个任务 但某一时刻CPU只能做唯一的一个任务 (2)多任务 多个任务并发执行其实就是CPU因为在进程内的转换很快
阅读全文
摘要:操作系统的引入 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。 操作系统的其他所有内容都是围绕进程的概念展开的。 顾名思义,进程即正在执行的一个过程。 进程是对正在运行程序的一个抽象。 所以想要真正了解进程,必须事先了解操作系统 一、为什么要有操
阅读全文