
并发编程
风中琉璃
这个作者很懒,什么都没留下…
展开
-
python之路---并发编程之操作系统
三个概念串行:一个任务完完整整的执行完,才执行下一个任务(不能片面的理解为:任务一个一个的执行)并发:多个任务看起来像同时进行(单核也能实现)并行:真正意义上的多个任务同时进行(只有多核才能实现) 什么是进程进程源自操作系统,是操作系统最核心的概念,进程是一个程序在一个数据集上的动态执行过程(是正在运行程序的一个抽象)进程,包括三个方面1.程序:我们通过程序来描述...原创 2018-09-04 15:22:40 · 152 阅读 · 0 评论 -
python之路---并发编程之线程&GIL
什么是GIL'''定义:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPy...原创 2018-09-07 14:22:10 · 221 阅读 · 0 评论 -
python之路---并发编程之线程&线程池与进程池
两个关键词:线程,进程/池池:可以将其理解为一种容器,有其固定的大小什么时候用线程池/进程池,分两个问题讨论1.什么时候用池:当程序中的任务并发数远远大于计算机的承受能力时,就应该用池的概念将开启的进程数或者线程数限制在计算机的承受范围之内2.用什么样的池:用进程池还是线程池取决于程序的类型,对于IO密集型--->线程,对于计算密集型--->进程两个概念...原创 2018-09-10 12:04:34 · 697 阅读 · 0 评论 -
python之路---并发编程之线程&守护线程/线程互斥锁/信号量
守护线程两个关键词:守护/线程守护:伴随,线程:本质也是一种线程守护线程会随着该进程内的所有非守护线程结束而结束。即,守护线程是守护着整个进程的运行周期怎么用和开启守护进程的方式一样,在start()之前设置daemon=Trueimport timefrom threading import Threaddef foo(name): print('...原创 2018-09-06 14:52:41 · 275 阅读 · 0 评论 -
python之路---并发编程之线程&开启线程的两种方式
线程线程是操作系统中能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位一个线程指的是一个进程中单一顺序的控制流一个进程可以开启多条线程,多个线程可以并发执行多个任务注意1.进程不是一个执行单位,进程是一个资源单位2.每个进程自带一个线程,线程才是CPU上的执行单位3.python无法利用多核优势,意味着一个进程下的多个线程无法实现并行进程 vs...原创 2018-09-06 14:12:32 · 397 阅读 · 0 评论 -
python之路---并发编程之进程&生产者与消费者模型
三个关键词:消费者/生产者/模型模型:可以理解为用于解决一类问题的统一方法/模板生产者:比喻的是在程序中负责产生数据的任务消费者:比喻的是在程序中负责处理数据的任务实现生产者 ------> queue < ------ 消费者 (通过队列进行交互,实现解耦和)好处实现了生产者与消费者的解耦和,生产者可以不断的生产,消费者可以不断的消费,平衡了生产者的生产...原创 2018-09-06 13:24:45 · 684 阅读 · 0 评论 -
python之路---并发编程之进程&IPC
IPC:进程间的通信两种实现方式管道:pipe队列:queue(其实就是pipe+lock)注意:两者实际上都是内存空间,不要往里面放入大数据,只能放数据量较小的消息 IPC所解决的问题1.当多个任务并发的去修改共享数据,就可能会造成数据错乱,我们通过加互斥锁使多个任务对共享数据的操作由并发变为“串行”,从而保证了共享数据的安全,而当出现需要修改多个共享数据的需求时,...原创 2018-09-06 10:28:06 · 326 阅读 · 0 评论 -
python之路---并发编程之进程&互斥锁
互斥锁将多个任务对修改共享数据的操作由并发变为“串行”没有互斥锁的情况下# json文件{"count": 2}# 执行文件import osimport timeimport jsonimport randomfrom multiprocessing import Processdef check(): with open("a.json","r...原创 2018-09-05 15:50:27 · 245 阅读 · 0 评论 -
python之路---并发编程之进程&僵尸进程/孤儿进程/守护进程
僵尸进程子进程在结束之后,释放掉其占用的绝大部分内存空间以及cpu等资源,但是会留下一个称为僵尸进程的数据结构(包含子进程的pid),等待父进程处理。这种情况下的僵尸进程是无害的(待所有的子进程结束后,父进程会统一向操作系统发送回收子进程pid的请求,或者使用join(),其内部也拥有wait()方法),但是,如果父进程是一个死循环,不断的创造子进程,而又不发送回收请求,这就造成了大量的pi...原创 2018-09-05 14:50:31 · 914 阅读 · 0 评论 -
python之路---并发编程之进程&进程对象相关的属性或方法
join()import timefrom multiprocessing import Processx = 1def task(name, num): print('%s is running' % name) global x x = 0 time.sleep(num) print('%s is done' % name)if ...原创 2018-09-05 13:46:49 · 180 阅读 · 0 评论 -
python之路---并发编程之进程&开启进程的两种方式
什么是进程进程是指一个程序在一个数据集上的动态执行过程(程序执行过程的抽象)进程包含程序:我们通过程序来描述一个进程所要执行的内容以及如何执行数据集:数据集代表程序在执行过程中所需要的资源进程控制块:用于描述进程的外部特征,记录进程的执行过程,系统可以用来控制,管理进程,也是操作系统感知进程存在的唯一标识进程执行的三种状态:阻塞/运行/就绪1.进程执行过程中出...原创 2018-09-05 12:08:11 · 1760 阅读 · 0 评论 -
python之路---并发编程之线程&死锁现象与递归锁/Event/线程Queue
死锁现象两个或两个以上的进程或线程在执行任务的过程中,因为争抢资源而发生相互等待的现象class MyThread(Thread): def run(self): self.f1() self.f2() def f1(self): lock_1.acquire() print('%s拿到1号锁' % se...原创 2018-09-07 15:48:37 · 210 阅读 · 0 评论