在Python中使用MPI进行文件写入而不产生竞争条件

1 投票
3 回答
1190 浏览
提问于 2025-04-18 17:47

我正在使用mpi4py来模拟一个分布式应用程序,我希望所有的进程都能写入一个公共文件。有没有什么函数可以做到这一点,而不会出现竞争条件呢?

3 个回答

0

我遇到过类似的问题。对我来说,最简单的解决办法就是让每个进程把自己的信息写到各自的文件里,并加上时间戳。这样,之后再处理这些文件,就能把所有内容整理得井井有条。

比如,可以在代码里加上这样的打印语句:

print("进程 %d 刚刚在 %s 收到了点 %r" % (rank, point, str(datetime.datetime.now())))

记得在代码最上面引入 datetime 模块。因为 mpi4py 在处理输入输出时有些特别,所以让每个进程自己管理输出是最稳妥的办法。

0

可以看看h5py的并行实现。

http://docs.h5py.org/en/latest/mpi.html

只要你正确地构建它,它和mpi4py配合得非常好。

0

你可以去看看网上很多关于使用MPI I/O的教程。我相信在mpi4py中也有一些方法可以使用它。

撰写回答