Queue doc pageの下部からキューの実装を使用していますが、いくつか質問があります。
50 のスレッドがあり、何十万もの JSON ファイルをフェッチします。スレッド数の 2 倍に設定するのは良い考え
Queue(maxsize=
ですか、それともそれより多くても少なくてもよいでしょうか?worker
関数を別のモジュールに入れたい。どうすればいいですか?そうしようとすると、関数NameError: global name 'q' is not defined
の 行に入ります。item = q.get()
関数に追加global q
しても役に立ちません。
編集:そのコードに最小限の変更を加えて、ワーカー関数を別のモジュールに移動することは可能ですか? 私はオブジェクトをあまりよく理解していないので、コードをできるだけシンプルに保ちたいと思っています。
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join()