Как заставить процессы mpi4py завершить печать перед выполнением time.sleep()?

Когда я запускаю приведенный ниже код с помощью mpiexec -n 5 python mpiTest.py, я ожидаю, что каждый процесс немедленно напечатает свое сообщение, а затем приостановится на указанное количество времени. Вместо этого он выполняется так, как если бы я поставил команду print ПОСЛЕ команды sleep. Почему это происходит и как я могу заставить его вести себя так, как ожидалось?

Добавление MPI.COMM_WORLD.Barrier() между командами print и sleep НЕ помогает.

Я использую MS-MPI на Win10.

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()

person endlesse    schedule 03.04.2017    source источник
comment
Вероятно, вам нужно очистить буфер ввода-вывода. Попробуйте sys.stdout.flush() после вызова print.   -  person eduffy    schedule 04.04.2017


Ответы (1)


Добавление sys.stdout.flush() после вызова print помогло, большое спасибо! знак равно

person endlesse    schedule 03.04.2017