私の問題は非常に単純です。10,000,000 行のデータで満たされた 400MB のファイルがあります。RAM がいっぱいになるのを避けるために、各行を反復処理し、何かを実行して、その行をメモリから削除する必要があります。
私のマシンには複数のプロセッサがあるため、このプロセスを最適化する最初のアイデアは、2 つの異なるプロセスを作成することでした。一度に数行ずつファイルを読み取り、徐々にリストを埋めていきます (リストの 1 つの要素がファイルの 1 行になります)。もう 1 つはこの同じリストにアクセスし、そこから要素を pop() して処理します。これにより、片側から拡大し、反対側から縮小するリストが効果的に作成されます。
言い換えれば、このメカニズムは、2 番目のプロセスがクランチするための行が常に入力されるバッファーを実装する必要があります。しかし、おそらくこれは以下を使用するよりも高速ではありません:
for line in open('/data/workfile', 'r'):