如何在执行 time.sleep() 之前让 mpi4py 进程完成打印?
Posted
技术标签:
【中文标题】如何在执行 time.sleep() 之前让 mpi4py 进程完成打印?【英文标题】:How to get mpi4py processes to finish printing before executing time.sleep()? 【发布时间】:2017-04-03 23:35:49 【问题描述】:当我使用mpiexec -n 5 python mpiTest.py
运行下面的代码时,我希望每个进程都立即打印其消息,然后休眠指定的时间。相反,它的执行就像我将print
命令放在sleep
命令之后一样。为什么会发生这种情况?如何让它按预期运行?
在print
和sleep
命令之间添加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()
【问题讨论】:
您可能需要刷新 IO 缓冲区。在print
调用之后尝试sys.stdout.flush()
。
【参考方案1】:
在print
调用之后添加sys.stdout.flush()
可以解决问题,非常感谢! =)
【讨论】:
以上是关于如何在执行 time.sleep() 之前让 mpi4py 进程完成打印?的主要内容,如果未能解决你的问题,请参考以下文章
python中from time import sleep是啥意思