摘要: import queue ''' 在同一个进程下的多个线程本来就能数据共享,为什么还要有队列 因为队列是管道加锁 使用队列你就不需要自己手动解决操作锁的问题 因为锁操作的不好 就会造成死锁现象 ''' # 普通队列 # q = queue.Queue() # q.put('hello') # print(q.get()) # 先进后出队列 就是堆栈 # q = queue.Lifo... 阅读全文
posted @ 2019-08-14 17:19 Nmdlao 阅读(150) 评论(0) 推荐(0) 编辑
摘要: from threading import Event,Thread import time ''' event事件能实现子线程等待子线程运行结束 join只能主线程等待子线程运行结束 ''' # 先生成一个event对象 e = Event() def light(): print('红灯亮') time.sleep(2) e.set() print('... 阅读全文
posted @ 2019-08-14 17:18 Nmdlao 阅读(98) 评论(0) 推荐(0) 编辑
摘要: # 信号量可能在不同领域对应不同的知识点 ''' 互斥锁:代表一个坑位 信号量:代表一个公共厕所,有多个坑位 ''' from threading import Semaphore,Thread import time import random sm = Semaphore(4) # 制造一个有五个坑位的厕所 def task(name): sm.acquire() p... 阅读全文
posted @ 2019-08-14 17:17 Nmdlao 阅读(108) 评论(0) 推荐(0) 编辑
摘要: from threading import Thread, Lock, RLock import time ''' Rlock锁 也被称之为递归锁 第一个抢到Rlock锁的人,可以连续使用acquire,release 每acquire一次,锁身上计数加1 每release一次,锁身上计数减1 等锁身上的计数为0时,其他人就可以抢锁 ''' # mutexA = Lock() # mutexB... 阅读全文
posted @ 2019-08-14 17:17 Nmdlao 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 内存管理 引用计数:值与变量的绑定关系的个数 标记清除:当内存快要满的时候 会自动停止程序的运行 检测所有的变量与值的绑定关系 给没有绑定关系的值打上标记,最后一次性清除 分代回收:(垃圾回收机制也是需要消耗资源的,而正常一个程序的运行内部会使用到很多变量与值 并且有一部分类似于常量,减少垃圾回收消 阅读全文
posted @ 2019-08-14 17:16 Nmdlao 阅读(119) 评论(0) 推荐(0) 编辑