4

キューに大量のデータを詰め込み、ワーカーがそのデータを空にするアプリケーションがあります。
キューがブロックされているため使用しているので、常にロックを適用する必要はありません。

そのため、そのキューに100万項目の文字列データが詰め込まれることがあります。各アイテムは約80バイトのメモリを使用します。

ある場合には、ピーク使用時に、Pythonは約3GBのメモリを消費し始めます。次に、コンシューマーがキュー全体を空にしても、Pythonはまだ3GBのメモリを使用しています。コマンドを使用してメモリをチェックしていますps。この現象は何ですか?そもそもキューが膨らんでいるために、このメモリ使用量が多いのでしょうか。もしそうなら、それを抑えるために何ができるでしょうか?キューの代わりとしてPythonに他のより良いコレクションはありますか?

4

1 に答える 1

0

Python は (通常) 使用したメモリをオペレーティング システムに返しません。キューが空になると、プロセスはキューに割り当てられたメモリを保持します。さらに 3GB 相当のデータをキューに追加する場合、Python は OS にさらに要求するのではなく、すでに保持しているメモリを再利用する必要があります (つまり、メモリ割り当てがさらに大きくなることはありません)。

于 2013-01-04T14:14:44.497 に答える