web-dev-qa-db-ja.com

LinuxのPython)で多数の小さなファイルを作成して書き込むよりも、1つの大きなファイルを作成して書き込む方が高速ですか?

LinuxマシンでPythonを使用している場合、次のどれが速くなりますか?なぜですか?

  1. プログラムの最初にファイルを作成し、非常に大量のデータ(テキスト)を書き込み、それを閉じ、プログラムの最後に大きなファイルを多数の小さなファイルに分割します。
  2. プログラムのスパン全体を通して、多くの小さいファイルが作成され、書き込まれ、閉じられます。

具体的には、問題のプログラムは、多くの時間ステップごとに非常に大きな配列の状態を記録する必要があるプログラムです。各タイムステップでの配列の状態は、独立したファイルに記録する必要があります。

私はLinuxでCを使用してきましたが、ファイルのオープン/作成およびクローズはかなりの時間を要し、オープン/作成操作が少ないほどプログラムが高速になることを知っています。 Pythonで書く場合も同じですか?同じOSを使用している場合でも、言語の変更は重要ですか?

この文脈におけるRAMの役割にも興味があります。たとえば、間違っている場合は修正してください。書き込まれるファイルの一部がRAMに配置されると想定しています。ファイルが大きくなりすぎると、RAMが膨張し、速度やその他の領域で問題が発生しますか?回答にRAMを組み込むことができれば、それは素晴らしいことです。

3
LazerSharks

プログラミング言語にはそれほど依存しないと思いますが、Linux(および他のシステム)がファイルを処理する方法に依存します。作成されるファイルごとに、ファイルに関するメタ情報を含むiノードが作成されます。したがって、無数の小さなファイルよりも1つの大きなファイルを作成する方が高速です。

RAMに関しては、OSがとにかくそれを処理する必要があります。占有されているページが多すぎる場合、OSはそれらをハードドライブに書き込みます。自分で処理したい場合は、pythonにもフラッシュ関数があります: http://www.tutorialspoint.com/python/file_flush.htm

1
Philipp Murry