Day39.队列介绍

1.队列介绍_队列中如果没有数据的话,get方法会原地阻塞,程序会卡住

2.队列介绍_.get_nowait()方法, 队列中没有数据直接报错

3.队列介绍_.get(3)没有数据后等待3秒之后报错

4.队列介绍_.full()判断队列是否满了和.empty()判断队列是否空了

5.队列介绍_使用捕获异常提示队列没有位置的情况

'''进程间通信'''
# todo 队列Queue模块
'''
队列:先进先出
堆栈:先进后出
'''
from multiprocessing import Queue

# todo 创建一个队列
q = Queue(5)   # todo 括号内可以传数字,表示生成的队列最大可以同时存放的数据量

# todo 往队列中存数据
q.put(111)
q.put(222)
q.put(333)
# print('判断当前队列是否满了'.center(40, '-'))
# print(q.full())     # todo 判断当前队列是否满了
# print('判断当前队列是否空了'.center(40, '-'))
# print(q.empty())    # todo 判断当前队列是否空了    
q.put(444)
q.put(555)
# print('判断当前队列是否满了'.center(40, '-'))
# print(q.full())     # todo 判断当前队列是否满了
# # q.put(666)        # todo 当队列数据放满了以后,如果还有数据在程序中会阻塞,知道有位置让出来,不会报错
# print('判断当前队列是否空了'.center(40, '-'))
# print(q.empty())    # todo 判断当前队列是否空了 
'''
存取数据,存是为了更好的取
千方百计的存、简单快捷的取
'''

# todo 去队列中读取数据
v1 = q.get()
v2 = q.get()
v3 = q.get()
v4 = q.get()
v5 = q.get()
# v6 = q.get()                          # todo 队列中如果没有数据的话,get方法会原地阻塞,程序会卡住
# v6 = q.get_nowait()                   # todo .get_nowait()方法, 队列中没有数据直接报错
# print('loading3s...'.center(40, '-'))
# v6 = q.get(timeout=3)                 # todo .get(3) 没有数据后原地等待3秒,之后在报错

try:
    v6 = q.get(timeout=3)
    print(v6)
except:
    print('队列没位置'.center(40, '-'))


'''
q.full()
q.empty()
q.get_nowait()
在多进程的情况下不精确
'''

posted on 2024-07-18 15:22  与太阳肩并肩  阅读(2)  评论(0编辑  收藏  举报

导航