-
Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。put方法用以插入数据到队列中,put方法还有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,该方法会阻塞timeout指定的时间,直到该队列有剩余的空间。如果超时,会抛出Queue.full异常。如果blocked为False,但该Queue已满,会立即抛出Queue.full异常。
-
get方法可以从队列读取并且删除一个元素。同样,get方法有两个可选参数:blocked和timeout。如果blocked为True(默认值),并且timeout为正值,那么在等待时间内没有取到任何元素,会抛出Queue.Empty异常。如果blocked为False,有两种情况存在,如果Queue有一个值可用,则立即返回该值,否则,如果队列为空,则立即抛出Queue.Empty异常。
-
1 from multiprocessing import Queue 2 #创建一个队列 3 q = Queue(3) #可以指定队列的大小,如果不写,默认的队列是无限的 4 q.put('消息1') 5 q.put('消息2') 6 q.put('消息3') 7 #put方法中可选参数,block=True,timeout=1队列已经满了,等待1s 8 #若还是没有空余空间,则抛出异常。 9 #q.put('消息4',block=True,timeout=1) 10 #判断当前队列是否已满 11 print('判断当前队列是否已满:',q.full()) 12 if not q.full(): 13 q.put('消息4') 14 #读取并删除元素get 15 #print(q.get()) 16 #print(q.get()) 17 #print(q.get()) 18 if not q.empty(): 19 print(q.get(block=True,timeout=1)) 20 #查看队列的大小 21 print('队列的大小:',q.qsize()) 22 for i in range(q.qsize()): 23 print(q.get())
1 判断当前队列是否已满: True 2 消息1 3 队列的大小: 2 4 消息2 5 消息3