我正在使用存储在字典中的大约 1000 万个唯一 dna 序列进行模拟。而且我需要处理每个序列,其中包括以 5 个字母为一组逐个字母地遍历序列(取前 5 个字母,将索引移位一个再取 5 个字母),并在单独的函数中处理它。这需要相当多的时间,因为我已经设置了它,所以它在 for 循环中一个一个地遍历每个序列。
我正在寻找一种将字典分成大约 20 个块的方法,我可以使用多处理来处理这些块。有没有比遍历每个键并迭代地填写 20 个字典更简单的方法?
我正在使用存储在字典中的大约 1000 万个唯一 dna 序列进行模拟。而且我需要处理每个序列,其中包括以 5 个字母为一组逐个字母地遍历序列(取前 5 个字母,将索引移位一个再取 5 个字母),并在单独的函数中处理它。这需要相当多的时间,因为我已经设置了它,所以它在 for 循环中一个一个地遍历每个序列。
我正在寻找一种将字典分成大约 20 个块的方法,我可以使用多处理来处理这些块。有没有比遍历每个键并迭代地填写 20 个字典更简单的方法?
我建议使用itertools.groupby
,这是 itertools 的工作。文档在这里。
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
您所要做的就是指定块的数量或您的案例,n = 5
您不需要拆分字典,只需将键拆分为 20 个组并在同一个字典上工作。我认为这更简单。