摘要: queue模块实现了多生产者,多消费者队列 queue模块的常用类和异常 queue.Queue(maxsize=0) 先进先出(FIFO)的队列, maxsize: 队列的大小(即队列的元素个数),默认0,队列大小无限;如果超过maxsize,队列会加锁,添加新元素是被堵塞,直到队列中的元素小于m 阅读全文
posted @ 2021-02-17 17:14 junffzhou 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、线程池 系统频繁的启动新线程,线程执行完被销毁,如果线程不能被重复使用,即每个线程都需要经过启动、销毁和运行3个过程,这必然会使得系统的性能急剧下降,线程池的意义就在于减少线程创建及消毁过程中损失的系统资源 线程池在程序运行时创建大量空闲线程,程序只需将要执行的任务交给线程池,线程池就会启动一个 阅读全文
posted @ 2021-02-17 17:13 junffzhou 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 一、线程条件Condition(条件变量) 依赖锁对象(Lock,RLock),锁对象可以通过参数传入获得,或者使用自动创建的默认锁对象当多个条件变量需要共享同一个锁时,建议传入锁对象 除了带有获取到锁的锁定池,Condition还包含一个未获取到锁的等待池,等待池中的线程处于等待阻塞状态,直到锁定 阅读全文
posted @ 2021-02-17 17:11 junffzhou 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 一、线程锁 保证多线程数据的一致性,对锁内的资源进行锁定,同一时间只能有一个线程来修改共享的数据多个线程同时加了同一个锁对象时,先获取到锁的线程会继续运行,未获取到锁的线程会处于堵塞状态,直到前面的线程释放锁,重新获取到锁才会往下运行 类型 threading.Lock 基本锁对象,每次只能获取一次 阅读全文
posted @ 2021-02-17 17:09 junffzhou 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 一、 线程的生命周期 当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,线程状态会多次在运行、就绪之间转换 线程的五种状态 新建(New) 当程序创建了一个Thread对象或Thread子类的对象后,该线程就处于新建状态,程序也不会立即执行该线程 就绪(Ready) 当调 阅读全文
posted @ 2021-02-17 17:08 junffzhou 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 一、线程的创建、启动 有关线程的一些注意 程序运行时默认创建一个主线程,主线程的线程执行体就是程序中的主程序,即没有放在任何函数中的代码块 主线程默认名为 MainThread,用户启动的多个线程名字依次是 Thread-1, Thread-2,... 当线程被创建后,必须通过调用线程的 start 阅读全文
posted @ 2021-02-17 17:05 junffzhou 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 一、线程与进程,并发与并行 一) 并发与并行 1 并发 同一时刻只能有执行一个任务,但多个任务间快速交替轮换执行,使得宏观上具有多个任务同时执行的效果 不同代码块交替执行 2 并行 同一时刻执行多个任务 不同代码块同时执行 二) 线程与进程 1 进程 进程是系统进行资源分配和调度的基本单位,是操作系 阅读全文
posted @ 2021-02-17 17:03 junffzhou 阅读(167) 评论(0) 推荐(0) 编辑