佇列用法
阿新 • • 發佈:2020-12-26
code
''' multiprocessing模組支援程序間通訊的兩種主要形式:管道和佇列 都是基於訊息傳遞實現的,但是佇列介面 ''' from multiprocessing import Queue q=Queue(3) #put ,get ,put_nowait,get_nowait,full,empty q.put(3) q.put(3) q.put(3) # q.put(3) # 如果佇列已經滿了,程式就會停在這裡,等待資料被別人取走,再將資料放入佇列。 # 如果佇列中的資料一直不被取走,程式就會永遠停在這裡。 try: q.put_nowait(Outputs3) # 可以使用put_nowait,如果佇列滿了不會阻塞,但是會因為佇列滿了而報錯。 except: # 因此我們可以用一個try語句來處理這個錯誤。這樣程式不會一直阻塞下去,但是會丟掉這個訊息。 print('佇列已經滿了') # 因此,我們再放入資料之前,可以先看一下佇列的狀態,如果已經滿了,就不繼續put了。 print(q.full()) #滿了 print(q.get()) print(q.get()) print(q.get()) # print(q.get()) # 同put方法一樣,如果佇列已經空了,那麼繼續取就會出現阻塞。 try: q.get_nowait(3) # 可以使用get_nowait,如果佇列滿了不會阻塞,但是會因為沒取到值而報錯。 except: # 因此我們可以用一個try語句來處理這個錯誤。這樣程式不會一直阻塞下去。 print('佇列已經空了') print(q.empty()) #空了
macname@MacdeMacBook-Pro py % python3 cccccc.py 佇列已經滿了 True 3 3 3 佇列已經空了 True macname@MacdeMacBook-Pro py %