python判断队列是否为空_[python模块]队列queue

  • Post author:
  • Post category:python


一、队列queue

队列queue 多应用在多线程场景,多线程访问共享变量。

对于多线程而言,访问共享变量时,队列queue的线程安全的。

因为queue使用了一个线程锁(pthread.Lock()),以及三个条件变量(pthread.condition()),来保证了线程安全。

总结:队列提供了一个安全可靠的共享数据使用方案。队列内置控制安全的几个参数,非用户使用名称作用

self.mutex互斥锁任何获取队列的状态(empty(),qsize()等),或者修改队列的内容的操作(get,put等)都必须持有该互斥锁。共有两种操作require获取锁,release释放锁。同时该互斥锁被三个共享变量同时享有,即操作conditiond时的require和release操作也就是操作了该互斥锁。

self.not_full条件变量

队列没满当队列中有元素添加后,会通知notify其他等待添加元素的线程,唤醒等待require互斥锁,或者有线程从队列中取出一个元素后,通知其它线程唤醒以等待require互斥锁。

self.not_empty条件变量

队列不为空线程添加数据到队列中后,会调用self.not_empty.notify()通知其它线程,唤醒等待require互斥锁后,读取队列。

self.all_tasks_done条件变量

队列数据全部处理完消费者线程从队列中get到任务后,任务处理完成,当所有的队列中的任务处理完成后,会使调用queue.join()的线程返回,表示队列中任务以处理完毕。###queue的初始化函数###

def __init__(self, maxsize=0):



版权声明:本文为weixin_34083807原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。