摘要: # 进程间通讯 # 1、进程对列multiprocessing.Quere import multiprocessing, time def foo(q): time.sleep(1) print('son process', id(q)) q.put(123) q.put('alex') if __name__ == '__main__': q ... 阅读全文
posted @ 2018-08-18 23:45 四十不惑的编程之路 阅读(623) 评论(0) 推荐(0) 编辑
摘要: # 多进程调用(大部分与多线程的操作一样) # 调用方式1 from multiprocessing import Process import time def f(name): time.sleep(1) print('hello', name, time.ctime()) if __name__ == '__main__': p_list = [] ... 阅读全文
posted @ 2018-08-18 22:39 四十不惑的编程之路 阅读(399) 评论(0) 推荐(0) 编辑
摘要: # 生产者消费者模型 # 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程 # 如果生产者速度快而消费者处理速度慢,或生产者处理速度慢而消费者处理速度快,这样就会发生等待 # 为了解决这个问题于是就引入了生产者和消费者模式 # 生产者消费者模式是通过一个容器来解决生产者与消费者强耦合问题 # 生产者和消费者不直接通读,而通过阻塞队列来进行通讯,生产者—阻塞对列—消费者 # 阻塞队... 阅读全文
posted @ 2018-08-18 21:46 四十不惑的编程之路 阅读(126) 评论(0) 推荐(0) 编辑
摘要: # 队列 一种数据结构(多线程利器) import queue # 导入对列模块 q = queue.Queue() # 创建一个对列对象,先进先出 # q = queue.Queue(3) # 创建一个对列对象,3表示队列中只能有3个值 # q = queue.LifoQueue() # 创建一个对列对象,后进先出 # q = queue.PriorityQueue # 创... 阅读全文
posted @ 2018-08-18 21:02 四十不惑的编程之路 阅读(184) 评论(0) 推荐(0) 编辑
摘要: # 信号量 也是同步锁,可用来控制线程的并发数 import threading, time class MyThread(threading.Thread): def run(self): if semaphore.acquire(): # 同时运行五个线程,acquire()放一个进程进去计数器-1 print(self.name) ... 阅读全文
posted @ 2018-08-18 20:28 四十不惑的编程之路 阅读(101) 评论(0) 推荐(0) 编辑
摘要: # 同步对象(Event) import threading, time class Boss(threading.Thread): def run(self): print('Boss:今晚大家都要加班到22:00') print(event.isSet()) # False 没有设定标志位 event.set() # 设置了标志... 阅读全文
posted @ 2018-08-18 20:13 四十不惑的编程之路 阅读(173) 评论(0) 推荐(0) 编辑
摘要: # 并发&并行 同步&异步 GIL 任务 同步锁 死锁 递归锁 # 并发:是指系统具有处理多个任务(动作)的能力 # 并行:是指系统具有 同时 处理多个任务(动作)的能力 # 同步:当进程执行到一个IO(等待外部数据)的时候,需要等待外部数据接收完 # 异步:当进程执行到一个IO(等待外部数据)的时候,不需要等待外部数据接收完,还可以做其它的处理 # GIL: 全局解释器锁 在pytho... 阅读全文
posted @ 2018-08-18 01:11 四十不惑的编程之路 阅读(266) 评论(0) 推荐(0) 编辑