キューの中のマルチスレッドの問題

スレッド間通信キュー

異なる通信キューとキューに使用されるプロセスの間でスレッド間通信は、プロセスキューはモジュールマルチプロセッシング中にカプセル化されたモジュールから導入することができ、スレッド間の通信は、インポートキューキュー個々のモジュールを必要とし、モジュールはスレッドありませんパッケージ。

  • キュー:
    • インポート:インポートキュー
    • これは、先入れ先出しで、サービス業で使用することができます
    • オブジェクトの例:Q = queue.Queue(NUM)、キューのサイズを制御するためのNUM、どのくらいのデータを配置することができます。
    • データへ:q.put(データ)
    • データが取ら:q.getを()
    • キューの長さが、データを入れていた:q.put_nowait(データ)、これは異常報告されます。queue.Fullを。あなたは、例外処理を追加することができますが、データは、このメソッドを使用した後に失われますので、この方法を使用することは推奨されません。
    • 撮影したデータはない:q.get_nowait()、また異常が報告され:queue.Empty、例外処理を設定することができます。
try:
    print(q.get_nowait())
except queue.Empty:
    # queue.Empty不是内置的错误,而是queue模块中的错误,可以直接使用模块.错误类型来调用
    print('队列中没有数据')
  • LifoQueue:
    • LIFOキューはと呼ばれるが、それは実際にスタックされています
    • 我々は、このマルチアルゴリズムの開発のため、サービス部門を使用することはありません
    • インポート:キューのインポートLifoQueueから
    • 例:LQ = LifoQueue()
    • データへ:lq.put(データ)
    • データ取ら:lq.get(データ)
  • 優先度つきキュー:
    • プライオリティキュー
    • 開発のVIPメンバーのために使用された手順
    • インポート:キューのインポート優先度つきキューから
    • 例:PRI =優先度つきキュー()
    • データが置か:pri.put((NUM、データ))、タプルをメモを、最初のパラメータは、シーケンス番号であります
    • データ採取:pri.get()は、データが取得された優先順位の数、小さい番号、ASCIIコードの順序番号がソートされ先出し数として取得され、順序は通常のデジタル方法ではありません。
from queue import PriorityQueue

pri = PriorityQueue()
pri.put((1, '福娃'))
pri.put((2, '奥运'))
pri.put((0, '五环'))
print(pri.get())
print(pri.get())
print(pri.get())

'''结果是:
(0, '五环')
(1, '福娃')
(2, '奥运')
'''

おすすめ

転載: www.cnblogs.com/ddzc/p/12470775.html