隊列中常用方法的使用


  • 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

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM