0

この質問に対する答えを見つけるのに苦労しています。言い回しが悪いのかもしれません。

大きなログ ファイルからデータを抽出する小さな Python プログラムがあります。次に、データを特定の形式で表示します。読み取り、解析、出力するだけです。

これには約 1 分かかります。

今、これを 300 個のファイルで実行したいと考えています。300 個のファイルを繰り返し処理し、同じコードを 1 つずつ実行するループ内にコードを配置すると、完了するまでに 300 分かかります。こんなに長くかからないで良かった。

このマシンには 8 つの仮想プロセッサがあります。このプログラムの実行時に余分な負荷を処理できます。ワークロードをこれらの vcpus に分散して、合計実行時間を短縮できますか? もしそうなら、これを実装する理想的な方法は何ですか?

私が求めているのはコードではなく、その背後にある理論です。

ありがとう

4

1 に答える 1

1

並列処理を最優先事項にしないでください。最優先事項は、シングルスレッドのパフォーマンスを可能な限り高速にすることです。私はこの方法に頼っています。あなたの簡単な説明から、I/O と解析のスピードアップに大きなチャンスがあるように思えます。

あなたがそれをした後、プログラムがCPUにバインドされている場合(私は疑わしい-ほとんどの時間をI / Oに費やしているはずです)、並列処理が役立つかもしれません

于 2013-10-03T12:54:18.480 に答える