Python で multiprocessing モジュールを使用する方法を理解しようとしています。以下のコードは、4 つのプロセスを生成し、利用可能になったときに結果を出力します。キューから結果を取得する方法には、もっと良い方法があるに違いないと私には思えます。キューに含まれるアイテムの数をカウントするのではなく、使用可能になったときにアイテムを返し、キューが空になると正常に終了するメソッド。ドキュメントによると、Queue.empty() メソッドは信頼できません。キューからの結果を消費する方法のより良い代替手段はありますか?
import multiprocessing as mp
import time
def multby4_wq(x, queue):
print "Starting!"
time.sleep(5.0/x)
a = x*4
queue.put(a)
if __name__ == '__main__':
queue1 = mp.Queue()
for i in range(1, 5):
p = mp.Process(target=multbyc_wq, args=(i, queue1))
p.start()
for i in range(1, 5): # This is what I am referring to as counting again
print queue1.get()