私は、とりわけ整数キーとリスト値を持つ辞書を使用してクラスを構築しています。ただし、この辞書に値を追加することは実際のボトルネックのようであり、コードを高速化する方法があるのではないかと考えていました。
class myClass():
def __init__(self):
self.d = defaultdict(list)
def addValue(self, index, value):
self.d[index].append(value)
これは本当にこれを行うための最適な方法ですか?値の順序はあまり気にしないので、おそらく、より高速な追加を備えた、より適切なデータ構造があります。繰り返しになりますが、「追加」は主な問題ではないようです。空のリストに追加するだけで、コードがはるかに高速になるためです。ほとんどの時間を占めるのは、以前に保存されたリストのロードだと思いますか?
問題は口述ではなく、リストの付録にあることがわかりました(ただし、元の投稿で別の方法で主張しましたが、申し訳ありません)。この問題は、Pythonのガベージコレクターのバグが原因です。これは、この他の質問で十分に説明されています。すべての値を追加する前にgcを無効にしてから再度有効にすると、プロセスが大幅に高速化されます。