我正在运行一个模拟,其中包含大约1000万个存储在字典中的独特dna序列。我需要处理每个序列,其中包括逐个字母地按5个字母组排序(前5个字母,移位索引1个,另取5个), 并在一个单独的功能中处理它。这需要相当长的时间,因为我设置它,因此它在for循环中逐个遍历每个序列。
我正在寻找的是一种将字典拆分成大约20个块的方法,我可以使用多处理来处理。有没有比仅仅通过每个键并迭代填充20个字典更简单的方法?
答案 0 :(得分:1)
我建议使用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)
您所要做的就是指定块数或您的案例n = 5
答案 1 :(得分:0)
您不需要拆分字典,您只需将密钥分成20组并处理同一字典即可。我认为这更简单。