摘要: 1.并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制) 1.该任务发生了阻塞 2.该任务计算的时间过长或有一个优先级更高的程序替代了它 第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果 阅读全文
posted @ 2018-12-25 18:19 毛斯钢 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1.线程队列 线程队列有三种:先进先出,后进先出,按优先级进出,具体如下: 1 import queue 2 3 # 先进先出 4 q = queue.Queue(3) 5 6 q.put(1) 7 q.put(2) 8 q.put(3) 9 # q.put(4) # 再放阻塞,等待队列消费 10 阅读全文
posted @ 2018-12-25 17:22 毛斯钢 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 1.死锁 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 1 from threading import Thread,Lock 2 im 阅读全文
posted @ 2018-12-25 17:09 毛斯钢 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 先了解下CPU的简单运行原理: 它运行速度非常快,1s内可以运行成千上万次,一个核心可以把1s切分成成千上万个时间片段,这个核心确实同时只能运行一个任务;但是可以将多个任务交替执行,比如上一个时间片段内运行A任务,下个时间片段可以运行B任务,交替执行,因为时间片段很短,所以感觉就是同时在进行了。 再 阅读全文
posted @ 2018-12-25 16:49 毛斯钢 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 公司=Cpu,部门=进程,开发人员=线程 部门隔离数据,财务部的财务数据不会给开发部门看,开发部门不是实际干活的单位,部门里的开发人员才干活,一个部门至少要有一个人才能干活,这就是主线程。 多线程( 阅读全文
posted @ 2018-12-25 16:46 毛斯钢 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程 1.开启进程的两种方式: 1 from multiprocessing import Process 2 import time 3 import os 4 5 # 方式一: 6 阅读全文
posted @ 2018-12-25 16:37 毛斯钢 阅读(242) 评论(0) 推荐(0) 编辑