与mpi4py并行分析文本文件

时间:2015-07-21 22:07:22

标签: python mpi4py

我有一个输入标签分隔的文本文件:

0   .4
1   .9
2   .2
3   .12
4   .55
5   .98

我用普通的Python分析它:

lines = open("songs.tsv").readlines()

def extract_hotness(line):
        return float(line.split()[1])

songs_hotness =map(extract_hotness, lines)
max_hotness = max(songs_hotness)

如何使用mpi4py并行执行相同的操作? 我开始使用scatter实现此功能,但这不会立即起作用,因为scatter需要列表元素的长度与节点数相同。

1 个答案:

答案 0 :(得分:0)

难以并行处理文本文件。你在哪里拆分文件?你甚至从并行文件系统读取?如果输入文件足够大,可以考虑使用MPI-IO。如果你走这条路,那么在C语境中提供的这些答案描述了mpi4py中仍存在的挑战:https://stackoverflow.com/a/31726730/1024740https://stackoverflow.com/a/12942718/1024740

另一种方法不是分散数据,而是将其全部读入等级0并广播给其他人。这种方法需要足够的内存来同时暂存所有输入数据,或者需要一次性读取一些数据的主工作方案。