queue使用方法
提示: 如果队列满了,那么使用put放入数据会等待,直到队列有空闲位置才可以放入
放入消息的时候不会进行等待,如果发现队列满了不能放入数据,那么会直接崩溃
import multiprocessing
import time
if __name__ == '__main__':
# 创建消息队列
# 3:表示消息队列的最大个数
queue = multiprocessing.Queue(3)
# 存放数据
queue.put(1)
queue.put("hello")
queue.put([1, 5, 8])
# 总结: 队列可以放入任意类型的数据
# 提示: 如果队列满了,那么使用put放入数据会等待,直到队列有空闲位置才可以放入
# queue.put(("xxx", "yyy"))
# 放入消息的时候不会进行等待,如果发现队列满了不能放入数据,那么会直接崩溃
# 建议: 放入数据统一put方法
# queue.put_nowait(("xxx", "yyy"))
# 判断队列是否满了
result = queue.full()
print("队列是否满了:", result)
# 使用empty判断队列是否为空,不靠谱
# 解决办法:
time.sleep(0.01)
# 解决办法: 可以通过qsize判断,但是mac版本没有qsize
result = queue.empty()
print("队列是否为空:", result)
# 获取队列消息的个数
size = queue.qsize()
print("消息个数:", size)
# 获取队列中数据
result = queue.get()
print(result)
# 获取队列消息的个数
size = queue.qsize()
print("消息个数:", size)
# 获取队列中数据
result = queue.get()
print(result)
# 获取队列消息的个数
size = queue.qsize()
print("消息个数:", size)
# 获取队列中数据
result = queue.get()
print(result)
# 获取队列消息的个数
size = queue.qsize()
print("消息个数:", size)
# 如果队列空了,那么使用get方法会等待队列有消息以后再取值
# result = queue.get()
# print(result)
# 取值的时候不等待,那么如果发现队列为空,取值不成功那么会直接崩溃
# 建议: 获取数据使用统一get方法
# result = queue.get_nowait()
# print(result)