我有一个输入标签分隔的文本文件:
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
需要列表元素的长度与节点数相同。
答案 0 :(得分:0)
难以并行处理文本文件。你在哪里拆分文件?你甚至从并行文件系统读取?如果输入文件足够大,可以考虑使用MPI-IO。如果你走这条路,那么在C语境中提供的这些答案描述了mpi4py中仍存在的挑战:https://stackoverflow.com/a/31726730/1024740和https://stackoverflow.com/a/12942718/1024740
另一种方法不是分散数据,而是将其全部读入等级0并广播给其他人。这种方法需要足够的内存来同时暂存所有输入数据,或者需要一次性读取一些数据的主工作方案。