キューJoinablequeueを使用して、だけでなく、生産者 - 消費者モデルの知識

キュー

キューおよびパイプラインは、これらの2つの方法は、メッセージパッシングの使用である:マルチ・モジュールは、2つの形式をサポートし、プロセス間通信(IPC)を達成するために、プロセス間で互いに分離されています

クラスキューを作成します。

キュー([MAXSIZE]):共有プロセスキューを作成し、キューがマルチプロセスセーフなキューは、あなたが複数のプロセス間の高速データ転送を実現するキューを使用することができます。

はじめとパラメータ:

MAXSIZEをキューに入れることができるエントリの最大数であり、いかなるサイズ制限は省略されていません。

メソッドのはじめに:

入れ:ブロックされたとタイムアウト:キュー.put方法にデータを挿入する方法は2つのオプションのパラメータがあります。

取得:この方法は、同じキューから要素を読み込み、削除することができ、この方法は、2つのオプションのパラメータ:.ブロックされ、タイムアウトを持っています。

put_nowait:、同じプットを使用するデフォルト= Falseのブロックされました

get_nowait:同じGETを使用して、デフォルト= Falseのブロックされました

空:あなたは、このメソッドを呼び出したときに、キューが空の場合、キューは、プロジェクトに参加した場合、結果は、真の復帰の過程では、例えば、信頼性がないTrueを返します。

フル:あなたはキューがいっぱいの場合、このメソッドがtrueを返す呼び出すと、キュー内の項目が削除された場合、その結果は、真の復帰の過程では、例えば、信頼性がありません。

QSIZE:現在のプロジェクトのキュー正しい数を返し、結果は信頼できない見て、結果を返した後、キューが変更される可能性があります。

生産者と消費者モデル

from multiprocessing import Process,JoinableQueue
import time,random
def producer(q,name):
    for i in range(10):
        print(f'生产者生产了{name}')
        time.sleep(random.randint(1, 3))
        q.put(f'{name}')

def consumer(q,name):
    while True:
        res = q.get()
        time.sleep(random.randint(1, 3))
        print(f'{name}买到了{res}')
        q.task_done()

if __name__ == '__main__':
    que = JoinableQueue()
    p = Process(target=producer, args=(que, 'apple'))
    c = Process(target=consumer, args=(que, 'con'))
    p.start()
    c.daemon = True
    c.start()
    p.join()
    que.join()

おすすめ

転載: www.cnblogs.com/cheng825/p/11529087.html