Queue是线程安全的
创建队列
Queue的初始化函数中可以指定队列的最大长度,默认值是0,表示队列长度为无限长。
1 | def __init__(self, maxsize=0): |
向队列添加数据
首先申请获取互斥锁,获得后,如果队列未满,则向队列添加数据;如果队列已满,则等待。最后处理完成后释放互斥锁。
该方法带有两个额外的参数(block和timeout),用于控制队列已满时,是否阻塞线程,以及阻塞的最大时间。
1 | def put(self, item, block=True, timeout=None): |
从队列中获取数据
首先申请获取互斥锁,获得后,如果队列中有数据,则取出数据,同时该数据从队列中移除。
该方法同样带有两个额外参数,用于控制队列为空时,是否阻塞线程,以及阻塞的最大时间。
1 | def get(self, block=True, timeout=None): |
put_nowait/get_nowait
只是对put/get的一层封装而已。是否无阻塞的添加/获取数据。
qsize/empty/full
这三个方法分别获取队列的长度、是否是空队列、是否已满。