私はまだゲームに慣れていないPythonで開発しています。この問題に正しく取り組むようにしたいと思います。すべてのアドバイスを喜んで受け入れます。
多くの場合、合計サイズが 20 ~ 35 GB を超える、複数のフラット ファイルに保存されたデータを使用しようとすることを想像してみてください。最も一般的なケースでは、これらのファイルは区切られている (csv、タブ) か、単純に固定幅です。目標は、これらのファイル、または各ファイルの一部のサブセットを取得し、入力を解析し (各列はデータ内の変数を表します)、それを何らかの宛先 (ローカルまたはリモートの SQL、さまざまな種類の他のローカル ファイルなど) に送信することです。テキストまたは stata の .dta などの独自のデータ形式を含む出力形式の
目標は、利用可能なシステム リソースを使用して、この操作を可能な限り迅速に実行することです (1 秒あたりのキロバイト数で推測できますか?)。
質問:
コンパイルされた C を使用して読み取り操作を行うと、効率が向上しますか? もしそうなら、どのライブラリの使い方を学ぶべきですか? また、解析と出力も c で行う必要がありますか?
ファイルが .zip または .gz である場合、読み取りと書き込みの前にファイル全体を解凍する必要がありますか? それとも圧縮したままにして、圧縮ファイルから読み取ることができるライブラリを使用しますか?
プログラムはマルチスレッドを使用する必要がありますか? ファイルのサブセット (たとえば、一度に n 行) を読み取り、たとえば j スレッドで解析して出力することを想像します。一度に 1 行ずつファイルを読み取るのが最適かどうかは明らかではありません...そして、スレッドとプロセスの最適な数は、利用可能なリソースとジョブのサイズに依存するようです。
したがって、コードは、使用するスレッドの数と、各スレッドが実行する必要がある作業量を最適に判断できるほど「スマート」である必要があります。異なる方法間の効率をどのように測定し、比較するのでしょうか?
プログラムはこれを動的に実行し、パフォーマンスに基づいて入出力方法を選択できる必要がありますか? (方法 A は常に方法 B を厳密に支配するか、展開環境の特異な変更を行うか)
明確にするために、リソース効率の無視できない改善と引き換えに、コードの非効率性をほぼすべてのレベルで受け入れます。
これらの質問が、私が理解しようとしていることの明確なアイデアを提供してくれることを願っています。私のプログラミング経験はほとんどが科学的/統計的パッケージに限定されているため、私の質問のいずれかが「rtm」に要約される場合は、穏やかに適切なマニュアルを提案してください。