チャンクを使用した Python でのイテレータの効率的な反復
大規模なデータセットを扱う場合、データをより小さなバッチまたはチャンクで処理する必要があります。これは、メモリ使用量を管理し、パフォーマンスを向上させるのに役立ちます。これを実現する 1 つの方法は、Python のイテレータを使用してデータを目的のサイズのチャンクに分割することです。
Grouper Recipe
itertools ドキュメントでは、grouper() Recipe は、データを固定長のチャンクにグループ化する便利な方法を提供します。ただし、不完全なチャンクは希望どおりに処理できない場合があります。
バッチ レシピ
itertools レシピに最近追加されたのは、batched() 関数です。データを指定された長さのタプルにバッチ処理することに優れています。 grouper() とは異なり、batched() は不完全なチャンクを明示的に処理し、例外や値を埋めることなく短いバッチを返します。
シーケンス固有のソリューション
作業中の場合シーケンスのみを使用する場合は、より単純なアプローチを使用できます。
(my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size))
このソリューションでは、元のものが保存されます。
Python 3.12 および itertools.batched
Python 3.12 以降では、itertools.batched を直接使用できます。これは、batched() レシピと同じ機能を提供します。
itertools.batched(iterable, n) # Batch data into tuples of length n
結論
適切な方法の選択は、特定のニーズと使用している Python のバージョンによって異なります。を使用しています。一般的で柔軟なバッチ処理には、batched() レシピまたは Python 3.12 の itertools.batched をお勧めします。シーケンス固有のタスクの場合、シーケンスベースのソリューションはシンプルさと型の保持を提供します。
以上がチャンクを使用して Python で大規模なデータセットを効率的に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。