-
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