私はネットワーク経由で多くのクエリを実行する必要があるプログラムを持っているので、私がやっていることは作業を並列化することです。それは本当にI / Oバウンドです。私は単純にやっています:
for i in range(options.workers):
w = Worker(queue, output_queue, options.site)
w.setDaemon(True)
w.start()
for i, dataset_metadata in enumerate(datasets_metadata):
queue.put((i+1, dataset_metadata))
queue.join()
これoptions.workers
はコマンドラインから来ます。今、作品数を動的に変えたいと思っています。
最初の質問: の後にワーカーを追加する方法はqueue.join
?
2 番目の質問: 実行時に最適なワーカー数を評価する方法は? タスク/時間の速度を監視し、この比率が変わらなくなるまでワーカーの数を増やす必要があると思います。