web-dev-qa-db-ja.com

SimpleQueue VSキューPython - SimpleQueueを使用する利点は何ですか?

キュー - 同期キュークラス 単にそれを述べる

simpleQueueで許可されている機能が少なくなります。

MultithReadingアプリケーションのための非常に基本的なキュー機能が必要です、それはSimpleQueueを使用する方法では役立ちますか?

6
Joshua Bone

pythonのドキュメントは、単純キューがトラッキングの機能を使用できないことを指定します(task_done、join)。これらは、キュー内のすべての項目が別のプロセス/スレッドによって処理されたことを追跡するために使用できます。コード例:

_import threading, queue

q = queue.Queue()

def worker():
    while True:
        item = q.get()
        print(f'Working on {item}')
        print(f'Finished {item}')
        q.task_done()

# turn-on the worker thread
threading.Thread(target=worker, daemon=True).start()

# send thirty task requests to the worker
for item in range(30):
    q.put(item)
print('All task requests sent\n', end='')

# block until all tasks are done
q.join()
print('All work completed')
_

上記のコードでは、メインスレッドは他のスレッドが送信を終了するのを待つために結合を使用します。一方、ワーカースレッドは、キュー内の項目を処理するたびに「タスクが完了」します。 「タスク」は、このコンテキストのキュー内の項目です。

お役に立てれば、

より多くのドキュメンテーションについての訪問について: https://docs.python.org/3/library/queue.html

1
Amit Berger