2017-12-28 34 views
0

私は1つのキューからアイテムを読み込み、それを修正して2番目のキューにプッシュするプログラムに取り組んでいます。これは、計算コストの高い修正機能のために複数のCPUで行う必要があります。プログラムは印刷ループ印刷(qOut.get())に貼り付けられています。Pythonマルチプロセッシングキューがstucked

from multiprocessing import Pool, Queue 

def update(qIn,qOut): 
    temp=qIn.get() 
    #this is going to be computationaly expensive function 
    qOut.put(temp+1) 



def main(): 

    #input queue 
    qIn=Queue() 

    #output queue 
    qOut=Queue() 

    #set input queue 
    for i in range(10): 
     qIn.put(i) 

    #set number of CPU cores 
    p=Pool(6) 

    #update each item in qIn and push it to qOut 
    for i in range(10): 
     p.apply_async(update, args=(qIn,qOut)) 

    p.close() 
    p.join() 

    #check qOut 
    for i in range(10): 
     print(qOut.get()) 




if __name__ == '__main__': 
    main() 

答えて

1

あなたがManagerを使用して作成しなければならないプロセス間であなたのキューを共有できるようにするために:

manager = multiprocessing.Manager() 
qIn = manager.Queue() 
qOut = manager.Queue() 

管理者を含む、異なるプロセス間で共有することができるデータを作成する方法を提供し異なるマシン上で実行されているプロセス間でネットワークを介して共有すること。

関連する問題