0
マルチプロセスプールの仕組みを理解しようとしています。以下のプログラムでは、4つのプロセスのプールを作成しました。プロセスプールのコールバック関数でapply_asyncを使用する
そして私は私がここにキューを使用する必要はありません実現result_list
import Queue
from multiprocessing import Process
from multiprocessing import Pool
result_list = []
def foo_pool(q): #Function for each process
print "foo_pool"
if(q.qsize() > 0):
number = q.get()
return number * 2
def log_result(result):
# This is called whenever foo_pool(i) returns a result.
# result_list is modified only by the main process, not the pool workers.
result_list.append(result)
if __name__ == "__main__":
q = Queue.Queue()
for i in range(4):
q.put(i + 1) #Put 1..4 in the queue
p = Pool(4)
p.apply_async(foo_pool, args = (q,), callback = log_result)
と呼ばれるリストを更新する必要があり、コールバック関数でapply_async
を呼び出します。しかし、私はキューを使用する必要がある別のプログラムのためにこれをテストしています。 プログラムを実行すると、関数foo_poolが呼び出されていません。印刷文print "foo_pool"
は実行されません。どうしてこれなの?