队列中常用方法的使用

  • Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。put方法用以插入数据到队列中,put方法还有两个可选参数:blockedtimeout。如果blockedTrue(默认值),并且timeout为正值,该方法会阻塞timeout指定的时间,直到该队列有剩余的空间。如果超时,会抛出Queue.full异常。如果blockedFalse,但该Queue已满,会立即抛出Queue.full异常。

  • get方法可以从队列读取并且删除一个元素。同样,get方法有两个可选参数:blockedtimeout。如果blockedTrue(默认值),并且timeout为正值,那么在等待时间内没有取到任何元素,会抛出Queue.Empty异常。如果blockedFalse,有两种情况存在,如果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

     

posted @ 2020-04-10 21:29  小他_W  阅读(954)  评论(2编辑  收藏  举报