2017-04-03 14 views
0

mpiexec -n 5 python mpiTest.pyを使用して以下のコードを実行すると、すべてのプロセスがメッセージをすぐに表示してから、指定された時間スリープすることが期待されます。代わりに、私はsleepコマンドの後にprintコマンドを置くかのように実行します。なぜこれが起こり、どうやってそれを期待どおりに動作させることができますか?mpi4pyプロセスがtime.sleep()を実行する前に印刷を終了する方法を教えてください。

MPI.COMM_WORLD.Barrier()printsleepコマンドの間に追加することは役に立ちません。

私はwin10でMS-MPIを使用しています。

print呼び出しは、トリックをしたおかげで、これまであまり後 sys.stdout.flush()を追加
from mpi4py import MPI 
import random 
import time 

def delayed(): 
    random.seed() 
    sek = random.randint(1, 5) 
    print("Delaying for ", sek, " seconds.") 
    time.sleep(sek) 
    return 

delayed() 
+0

おそらくIOバッファをフラッシュする必要があります。 'print'コールの後に' sys.stdout.flush() 'を試してください。 – eduffy

答えて

関連する問題