Python使用多处理并行化函数

时间:2018-05-07 13:08:56

标签: python function parallel-processing multiprocessing

我是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个核心上运行这个功能吗?

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中提到的,你可以通过优化你的功能获得很大的速度。我建议尝试以下方法:

import itertools

def filerd(f):
    with open(f, "r") as inputfile:
        return list(itertools.islice(inputfile, None, None, 4))

如果您不需要将返回值作为列表,但对迭代器没有问题,则可以删除list()。然后,最慢的部分很可能是从磁盘加载数据,无论如何你都需要这样做。