1. 程式人生 > 實用技巧 >佇列用法

佇列用法

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(
3) # 可以使用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()) #空了
Outputs
macname@MacdeMacBook-Pro py % python3 cccccc.py
佇列已經滿了
True
3
3
3
佇列已經空了
True
macname@MacdeMacBook-Pro py %