我在python中使用mpi4py来激发分布式应用程序。
我需要创建一个文件OUTPUT_FILE,它可以被所有进程访问,并且在启动应用程序之前应该为空。
问题是mpi4py启动多个进程。如果我给出一个清空OUTPUT_FILE的命令,所有进程都会尝试这样做。这是不可取的,因为某些数据可能会丢失。
是否可以创建这样的OUTPUT_FILE,如果是,那么如何?
答案 0 :(得分:1)
我对mpi4py
没有太多经验,但您应该可以做以下事情:
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
# first open your file / clear it whatever
# with just one of your processes:
if rank == 0:
myfile = open("myfile", "w")
# have all your processes sync up
comm.Barrier()
if rank != 0:
# all the other processes can open
# in append mode, or whatever
myfile = open("myfile", "a")
# Carry on, doing science or what have you ;-)
我假设您确实想在MPI.File
中使用并行IO支持,但正如我已经说过的那样,我对mpi4py
并不十分熟悉。