我正在进行成员资格搜索,其中小名单的每个成员(核苷酸读数字符串列表)被测试成为非常大的相关k-mers成员。
每次读取核苷酸大约200次(每次读取的k-mers量),该脚本必须能够处理包含数百亿读取的文件。我设计了脚本,以便一次处理一个读取,使用两个(成对的结束)输入fastq文件作为生成器。
该脚本运行正常,但现在可能需要几天到几周才能完成。
def readTrim1(inRead, indexList):
# k-merize inRead.
# for each k-mer in inRead
#check if k-mer is present in trie of k-mres.
# reassemble k-mers into read and return validated read.
for read1, read2 in readLists:
finalRead1 = readTrim1(read1, indexList) # send to method that will perform
# membership search.
finalRead2 = readTrim2(read1, indexList) # Same but for second read.
基本上,一次读取一次将被发送到将执行大约200次成员资格搜索的方法。每次读取都会发生一次,一旦完成,将处理下一次读取。
如何使用多个处理器(尽可能多的给定机器可以提供)来提高计算效率,同时仍保持特定的读取顺序?
我认为并行化应该在main中进行,因为我认为限制因素是要处理的大量读取,而不是成员搜索方法本身。
我查看过以下网站进行研究,但没有找到一个与我相似的例子:
https://wiki.python.org/moin/ParallelProcessing http://www.parallelpython.com/
谢谢