2017-04-03 85 views
0

當我使用mpiexec -n 5 python mpiTest.py運行下面的代碼時,我希望每個進程立即打印它的消息,然後休眠指定的時間。相反,它會執行,就像我在sleep命令後面輸入print命令一樣。爲什麼會發生這種情況,我如何才能讓它按照預期行事?如何在執行time.sleep()之前讓mpi4py進程完成打印?

printsleep命令之間添加一個MPI.COMM_WORLD.Barrier()不會有幫助。

我在win10上使用MS-MPI。

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

回答

0

print調用後添加sys.stdout.flush()的伎倆,萬分感謝! =)

相關問題