在burs中工作的mpi进程

2024-09-29 07:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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个进程都访问这个函数来转储数据


Tags: 文件namelogdatawithopenlog2pickle
1条回答
网友
1楼 · 发布于 2024-09-29 07:21:34

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

即使这些都是(主要)谈论打印到屏幕上,问题是一样的。MPI是一种分布式模型,这意味着某些进程的执行速度会比其他进程快,而且根据每个进程的工作负载/顺序,每次的执行顺序可能会有所不同。你知道吗

如果排序很重要,您可以使用同步函数来实现它,也可以使用一些更高级的东西,比如MPI I/O来写入文件(这不是我的专长,所以我不能告诉您更多)。你知道吗

相关问题 更多 >