我正在运行一个模拟,字典中存储了大约 1000 万个独特的 DNA 序列。我需要处理每个序列,包括以 5 个为一组逐个字母地遍历序列(取前 5 个字母,将索引按一个换取另一个 5), 并在一个单独的函数中处理它。这需要相当多的时间,因为我设置了它,所以它在 for 循环中一个一个地遍历每个序列。
我正在寻找的是一种将字典分成大约 20 个 block 的方法,我可以使用多处理来处理这些 block 。有没有比遍历每个键并迭代填充 20 个词典更简单的方法?
请您参考如下方法:
我建议使用 itertools.groupby,这是 itertools 的工作。文档 here .
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
您所要做的就是指定 block 的数量或您的情况,n = 5
