队列get函数和get_nowait函数及异常捕获

时间:2025-01-14 15:06:44
import multiprocessing import time if __name__ == '__main__': # 创建消息队列 # 3: 表示消息队列最大个数 queue = (3) # 放入数据 queue.put(1) queue.put("abc") queue.put(["abc", "456"]) # 队列满了在放入数据, 就不能放入数据了,直到消息队列有空闲位置才能再放入数据 # (("34", 90)) # put_nowait: 不会等待队列有空闲位置再放入数据,如果数据放入不成功就直接崩溃 # queue.put_nowait(("34", 90)) # 建议: 放入数据使用put,因为比较安全不会崩溃 # 查看队列是否是满的 # result = () # print(result) # 坑点: 只使用put放入数据直接判断队列是否为空获取的结果不正确,因为没有等队列把数据写完直接就取获取了,那么这是队列是空的 # for i in range(10000): # print(i) # 解决办法: 1. 延时一段时间 2. 通过个数去判断 # (0.001) # if () == 0: # mac 版本不能使用qsize() print("队列是空的") # result = () # print(result) # 查看队列的个数 size = () print("消息队列个数:", size) # 获取队列的数据 value = queue.get() print(value) size = () print("消息队列个数:", size) # 获取队列的数据 value = queue.get() print(value) size = () print("消息队列个数:", size) # 获取队列的数据 value = queue.get() print(value) size = () print("消息队列个数:", size) # 队列为空, 使用get会等待,直到队列有数据以后再取值 # value = () # print(value) # 队列为空,取值的时候不等待,但是取不到值那么直接崩溃了 # value = queue.get_nowait() # print(value) # 建议: 获取队列的数据统一get,因为能保证代码不会有问题