摘要: (1)线程之间虽然数据共享,但是多个线程同时修改同一份数据,依然会造成数据的不准确,因此,也需要加 上线程锁Lock,用法和进程锁一样,只不过是从threading里面导包 # (1)常见情况引发的死锁问题,模拟4个人吃一碗面 from threading import Thread,Lock im 阅读全文
posted @ 2019-04-28 22:19 夜雨潇湘子 阅读(144) 评论(0) 推荐(0) 编辑
摘要: # (1) 一个进程可以有多个线程 一个进程至少有一个线程 #(2) 并发多线程和多进程的速度对比 多线程更快 #(3) 多个线程共享同一份进程资源 #(4)setDaemon 守护线程:等待其他所有子线程结束之后,自动结束 语法;线程.setDaemon(True) 线程相关函数 语法: from 阅读全文
posted @ 2019-04-28 22:18 夜雨潇湘子 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #进程是资源分配的最小单位 #线程是计算机中调度的最小单位 #线程的缘起 资源分配需要分配内存空间,分配cpu: 分配的内存空间存放着临时要处理的数据等,比如要执行的代码,数据 而这些内存空间是有限的,不能无限分配 目前来讲,普通机器,5万个并发程序已是上限.线程概念应用而生. #线程的特点 线程是 阅读全文
posted @ 2019-04-28 22:17 夜雨潇湘子 阅读(85) 评论(0) 推荐(0) 编辑
摘要: Manager 能够实现进程之间的数据共享(dict list),但是必须上锁来确保数据的准确性, 队列则可以实现进程之间数据通信 from multiprocessing import Process , Manager ,Lock def work(d,lock): # 自动上锁和解锁 with 阅读全文
posted @ 2019-04-28 22:15 夜雨潇湘子 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 消费者模型-->存和取得过程 和Queue队列区别:解决了Queue队列拿取完,程序阻塞不能自动关闭(依靠放入None来解决)的问题 >参见上个例子 put 存入, get 获取 q.task_done 通过队列其中一个数据被处理,JoinableQueue 默认会计数,执行一次task_done减 阅读全文
posted @ 2019-04-28 22:14 夜雨潇湘子 阅读(157) 评论(0) 推荐(0) 编辑
摘要: # IPC Inter-Process Communication # 实现进程之间通信的两种机制: # 管道 Pipe 用的很少 # 队列 Queue 队列的特征:现进先出,栈属于后进后出 基本语法:from multiprocessing import Queue q = Queue(3) 传参 阅读全文
posted @ 2019-04-28 22:12 夜雨潇湘子 阅读(157) 评论(0) 推荐(0) 编辑
摘要: (1)# 开启过多的进程并不一定提高你的效率 因为进程池可以实现并行的概念,比Process单核并发的速度要快 # 如果cpu负载任务过多,平均单个任务执行的效率就会低,反而降低执行速度. 1个人做4件事和4个人做4件事 显然后者执行速度更快, 前者是并发,后者是并行 利用进程池,可以开启cpu的并 阅读全文
posted @ 2019-04-28 22:10 夜雨潇湘子 阅读(155) 评论(0) 推荐(0) 编辑
摘要: # 阻塞事件 : e = Event()生成事件对象e e.wait()是给程序加阻塞 , 程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值是False] e.wait(2) 传参,相当于time.sleep(2) # 如果是True 那就不加阻塞 # 如果是False 就加阻塞 阅读全文
posted @ 2019-04-28 22:09 夜雨潇湘子 阅读(237) 评论(0) 推荐(0) 编辑
摘要: #同一时间允许一个进程上一把锁 就是Lock 加锁可以保证多个进程修改同一块数据时,同一时间只能有一个任务可以进行修改,即串行的修改,没错,速度是慢了,但牺牲了速度却保证了数据安全。 #同一时间允许多个进程上多把锁 就是[信号量Semaphore] 信号量是锁的变形: 实际实现是 计数器 + 锁,同 阅读全文
posted @ 2019-04-28 22:03 夜雨潇湘子 阅读(323) 评论(0) 推荐(0) 编辑
摘要: join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法 join 等待所有子进程执行完毕之后,主进程在向下执行 (1) 1个子进程通过j 阅读全文
posted @ 2019-04-28 22:01 夜雨潇湘子 阅读(272) 评论(0) 推荐(0) 编辑