Python 在突发事件中工作的mpi进程

Python 在突发事件中工作的mpi进程,python,mpi,pickle,Python,Mpi,Pickle,我正在使用mpi4py对分布式应用程序进行建模 我有n个进程访问共享文件,并在执行期间将一些日志写入共享文件。我注意到日志不是统一编写的。以下是如何将日志写入共享文件的示例: process0.log0 process0.log1 process0.log2 process0.log3 process0.log4 process2.log0 process2.log1 process2.log2 process1.log0 process1.log1 理想情况下,它应该是: process0.

我正在使用mpi4py对分布式应用程序进行建模

我有n个进程访问共享文件,并在执行期间将一些日志写入共享文件。我注意到日志不是统一编写的。以下是如何将日志写入共享文件的示例:

process0.log0
process0.log1
process0.log2
process0.log3
process0.log4
process2.log0
process2.log1
process2.log2
process1.log0
process1.log1
理想情况下,它应该是:

process0.log0
process1.log0
process2.log0
process0.log1
process2.log1
process1.log1
process0.log2
有人能告诉我我的实现可能有什么问题吗?我正在使用Pickle模块写入文件

以下是转储日志的函数:

import pickle

log_file_name = "store.log"

def writeLog(data):
  try:
    with open(log_file_name,"a") as fp:
        pickle.dump(obj=data,file=fp)
  except:
    with open(log_file_name,"w") as fp:
        pickle.dump(obj=data,file=fp)

def readLog():
 data = []
 try:
    with open(log_file_name,"r") as fp:
        while True:
            data.append(pickle.load(fp))
    return data
 except EOFError:
    return data

所有n个进程都访问此功能以转储数据

有许多问题/答案可以解释您在这里看到的现象:

  • )
尽管这些(大部分)都是关于在屏幕上打印,但问题是一样的。MPI是一种分布式模型,这意味着某些进程的执行速度比其他进程快,并且根据每个进程的工作负载/顺序,每次的执行顺序可能不同


如果排序很重要,您可以使用同步功能来强制执行它,或者您可以使用一些更奇特的东西,如MPI I/O来写入文件(这不是我的专长,所以我不能告诉您更多).

请共享您的实现代码,以便我们找到修复方法it@sundarnatarajССаааСаааа是您的MPI分发策略是
工作池还是
分散聚集?