我是python的新手并使用python 2.7。我正在编写一个解析原始文件的程序。我编写了一个调用文件的函数,并将每4行放入一个列表中。我的文件很大,说4 GB的原始dna数据。
def filerd(f):
identifier = []
with open(f,'r') as inputfile:
count = 1
for line in inputfile:
if count%4 == 1:
identifier.append(line)
count = count + 1
else:
count = count + 1
return identifier
现在我如何并行化这个功能,以便我可以获得加速。 有什么办法可以在我的服务器的5个核心上运行这个功能吗?
答案 0 :(得分:0)
正如我在上面的评论中提到的,你可以通过优化你的功能获得很大的速度。我建议尝试以下方法:
import itertools
def filerd(f):
with open(f, "r") as inputfile:
return list(itertools.islice(inputfile, None, None, 4))
如果您不需要将返回值作为列表,但对迭代器没有问题,则可以删除list()
。然后,最慢的部分很可能是从磁盘加载数据,无论如何你都需要这样做。