2017-04-03 4 views
0

Lorsque j'exécute le code ci-dessous en utilisant mpiexec -n 5 python mpiTest.py, je m'attends à ce que chaque processus imprime son message immédiatement, puis dorme pendant la durée spécifiée. Au lieu de cela, il s'exécute comme si je mettais la commande print APRES la commande sleep. Pourquoi cela arrive-t-il et comment puis-je le faire se comporter comme prévu? L'ajout d'un MPI.COMM_WORLD.Barrier() entre les commandes print et sleep ne aide PAS. J'utilise MS-MPI sur win10.Comment obtenir des processus mpi4py pour terminer l'impression avant d'exécuter time.sleep()?

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

Vous avez probablement besoin de vider votre tampon E/S. Essayez 'sys.stdout.flush()' après l'appel 'print'. – eduffy

Répondre

0

Ajout sys.stdout.flush() après l'appel print a fait l'affaire, merci toujours tellement! =)