0
我只编程了大约一年,所以非常了解基础知识,但我正在努力让我的头脑围绕着python多处理文档。如果有人能为我们手头的问题指出正确的方向,那将是非常棒的。Python多处理编辑距离计算
我正在使用python-Levenshtein c-module来计算大量DNA序列(〜5000-2000)之间的成对距离,并且想要使用多处理来加快速度。我的问题的基本版本的伪代码如下:
def edit_distance(seqA, seqB):
...
return distance
sequence_list = [seq1, seq2, ... seq10000]
results_dict = {}
centroid = sequence_list[0]
results_dict[centroid] = {}
for target in sequence_list[1:]:
results_dict[centroid][target] = edit_distance(centroid, target)
一旦得到全面落实,这将使用每个序列为重心进行。如果有人能指出哪种方法最适合多次处理sequence_list [1:]中所有目标的距离计算,那将会很棒。谢谢。
谢谢。这适用于我,但实际上比单个过程要长10倍。我认为可能会产生相当大的开销,造成新的进程导致大量减速?回复:时间复杂度,我已经实施了一些节省时间的步骤,但我需要比较详尽,所以我可以采取多少措施是有限的。 – edm
@edm:所有进程都由'Pool()'创建。我怀疑这个时间差是由于创建新的进程所致,除非'sequence_list'很小,'edit_distance()'的时间可以忽略不计(在这种情况下,重用池而不是创建一个新池)。你可以尝试消除主进程和工作人员之间不必要的'target'拷贝(例如,使用'zip()'或者传递'sequence_list'索引)和/或为'imap()'尝试不同的'chunksize'参数。 – jfs