2

ディクショナリに保存されている約 1,000 万の一意の DNA シーケンスを使用してシミュレーションを実行しています。そして、各シーケンスを処理する必要があります。これは、シーケンスを 1 文字ずつ 5 文字のグループで処理し (最初の 5 文字を取得し、インデックスを 1 つずつシフトして別の 5 文字を取得)、別の関数で処理することで構成されます。for ループで各シーケンスを 1 つずつ処理するように設定しているため、これにはかなりの時間がかかります。

私が探しているのは、マルチプロセッシングを使用して処理できる約 20 のチャンクに辞書を分割する方法です。各キーを調べて 20 個の辞書を繰り返し埋めるよりも簡単な方法はありますか?

4

2 に答える 2

1

を使用することをお勧めし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

于 2013-08-02T20:19:12.800 に答える
0

辞書を分割する必要はありません。キーを 20 のグループに分割し、同じ辞書で作業するだけです。その方が簡単だと思います。

于 2013-08-02T20:18:04.663 に答える