Python:使用多处理在块中处理大型字典

时间:2013-08-02 20:12:20

标签: python dictionary split multiprocessing

我正在运行一个模拟,其中包含大约1000万个存储在字典中的独特dna序列。我需要处理每个序列,其中包括逐个字母地按5个字母组排序(前5个字母,移位索引1个,另取5个), 并在一个单独的功能中处理它。这需要相当长的时间,因为我设置它,因此它在for循环中逐个遍历每个序列。

我正在寻找的是一种将字典拆分成大约20个块的方法,我可以使用多处理来处理。有没有比仅仅通过每个键并迭代填充20个字典更简单的方法?

2 个答案:

答案 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组并处理同一字典即可。我认为这更简单。