进程Queue队列的常见使用方法/day18

注:强取和强存可能会出现异常,因此需要使用try...except...

q.empty()和q.full()的使用
from multiprocessing import Queue
q=Queue(3)          #设置长度为3的一个队列
print(q.empty())    #判断队列是否为空,当然,这个时候是空的
q.put(3)            #往队列里加元素
q.put(4)
q.put(5)
# print(q.get_nowait())   #立即获取队列中先放进的元素(先进先出原则)
# print(q.get_nowait())
# print(q.get_nowait())

print(q.full())          #判断队列是否为满,以True和False的方式返回
print(q.empty())
value=q.get()
print(value)

q.put()和q.get()的使用
队列的阻塞问题
from multiprocessing import Queue
q=Queue(3)
q.put(1)
q.put(2)
q.put(3)
print(q.get())      #结果为1 取出先放进去的值
# q.put(4)          #由于不能再往队列里填东西,所以会阻塞在这里,因而print("我在这里")这句话不会执行
print("我在这里")

from multiprocessing import  Queue
q=Queue(3)
q.put(1)
q.put(2)
q.put(3)
q.put(4)       #会报queue.Full错误因为队列已经满了,不能再往里增加值了

q.put()的使用以及q.qsize()的使用
from multiprocessing import  Queue
q=Queue(3)
q.put(1)
q.put(2)
q.put(3)
try:
    q.put(4,block=False)
except:
    print("程序出现异常")
    print("队列的长度为",q.qsize())  #队列的长度为 3,q.qsize()可以表示队列的长度
结果为“程序出现异常”,因为q.put(4,block=False)处于非阻塞状态,但是q队列已满,所以不能再往里加东西会报异常
 

put_nowait(5)的使用
from multiprocessing import Queue
q=Queue(2)
q.put(1)
q.put(2)
q.put_nowait(3)      #这样会报错,q.put_nowait(3) 和q.put(3,block=False)的使用方法有相似之处都是立即执行

q.get_nowait()的使用
q.get_nowait()  #等价于q.get(block=False),都是立即执行的意思
from multiprocessing import Queue
q=Queue(2)
q.put_nowait(1)
q.put_nowait(2)
print(q.get_nowait())
print(q.get_nowait())
结果分别为1和2

 

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88541042