1

我有一个输入制表符分隔的文本文件:

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需要列表元素的长度与节点数相同。

4

1 回答 1

0

并行处理文本文件很困难。你在哪里分割文件?你甚至从并行文件系统中读取吗?如果您有足够大的输入文件,您可能会考虑使用 MPI-IO。如果你走这条路,这些答案在 C 上下文中提供,描述了 mpi4py 中仍然存在的挑战:https ://stackoverflow.com/a/31726730/1024740 和https://stackoverflow.com/a/12942718/ 1024740

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

于 2015-08-07T19:02:19.400 回答