多くのファイルでのPython関数呼び出しの並列化/スケジューリング

BBQuercus

同じ機能を適用したいcsvファイルが数十万個あります。次のダミー関数のようなもの:

def process_single_file(fname):
    df = pd.read_csv(fname)
    # Pandas and non-pandas processing
    df.to_csv(f"./output/{fname}")

すべてのファイルを個別にループするのは時間がかかりすぎるので、私の質問は、この実行をスケジュールして並列化するための最も効率的な方法は何ですか。プロセスは相互に依存していません。私はPythonを使おうと試み始めましたmultiprocessing

import multiprocessing

files = sorted(glob.glob("./input/*.csv"))

processes = []
for fname in files:
    p = multiprocessing.Process(target=process_file, args=(fname,))
    processes.append(p)
    p.start()

for process in processes:
    process.join()

しかし、私のコンピューターは、すべてのCPUにすぐに過負荷をかけ、速度低下とクラッシュを引き起こすため、このプロセスを好まないようです。すべてのCPUのワークロードを削減しDaskBashスクリプトの使用や変更などのタスクをスケジュールするためのより効率的な方法はありpythonますか?前もって感謝します。

お兄さん

それは本当にあなたのボトルネックがどこにあるかに依存します:あなたはファイルの読み取り/書き込み、またはCPU処理の作業により多くの時間を費やしていますか?

このRealPythonチュートリアルは、これらすべてについて学ぶのに本当に役立ちました。良い読み物をお勧めすることしかできません;)

チュートリアルで説明されているように、I / Oの場合、マルチスレッドで十分です(マルチプロセッシングよりも優れている可能性があります)。

def process_all_files(files):
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        executor.map(process_single_file, files)

また、CPUの場合、マルチプロセッシングを使用すると、使用可能なすべてのコアを使用できます。

def process_all_files(files):
    with multiprocessing.Pool() as pool:
        pool.map(process_single_file, files)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

setTimeoutと関数呼び出しのスケジューリング

ジュリア:別のファイルで並列ループを呼び出す

C ++へのPythonの埋め込み:Pythonスクリプトへのモジュールのインポートは、ある関数呼び出しでは機能しますが、別の関数呼び出しでは機能しません

Pythonでのプロファイリング:関数を呼び出したのは誰ですか?

引用符で囲まれたファイル名のリストを入力として並列に使用してシェル関数を呼び出す

Pythonでのミューティング/インプレース関数の呼び出しまたは適応

別のファイルの関数を呼び出す場合は、同じPythonモジュールをインポートします

joomla 2.5でajaxを使用してカスタムモジュールのヘルパーファイルで関数を呼び出す方法は?

マルチプロセッシングモジュールによる関数がWindowsで呼び出されたときに、Python実行可能ファイルが新しいウィンドウインスタンスを開く理由

別のファイルからのPython呼び出し関数

別のファイルからのPython呼び出し関数

Python:循環インポートを使用して別のファイルで関数を呼び出す方法

Pythonの別のファイルで関数を呼び出す

Pythonの別のファイルで関数を呼び出す

関数を呼び出した後、ビューファイルの複数選択列から複数選択

関数呼び出しの実行をキューでスケジュールする方法は?

Railsコンソールで多くのヘルパー呼び出しをスクリプト化する

PythonファイルへのJavascript関数呼び出しは、データではなくファイルの内容を返しますか?

Pythonのロギングモジュールが呼び出されるたびに関数を呼び出す

イベントループへの引数を使用して関数の呼び出しをスケジュールする

外部モジュール関数の関数呼び出しを sinon でスパイできますか?

分割されたファイルでいくつかのイベントを伴うJquery関数呼び出し

非同期関数呼び出しのキューイング

関数名のリストをループして変数にすることにより、モジュールから多くのPython関数を呼び出します

Python:メモリのプロファイリング中に再帰関数呼び出しを増やす

ファイルが存在する場合のnull Laravelでのメンバー関数move()の呼び出し

ヘッダーファイルなしで、c ++を使用して他のモジュールの関数を呼び出す方法は?

呼び出し元のPythonモジュールまたはスクリプトと同じディレクトリでファイルを実行する

Rustでのクロスモジュール関数呼び出し

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Ansibleで複数行のシェルスクリプトを実行する方法

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    パンダは異なる名前の列に追加します

  8. 8

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  9. 9

    グラフ(.PNG)ファイルをエクスポートするZabbix

  10. 10

    Chromeウェブアプリのウェブビューの高さの問題

  11. 11

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  12. 12

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  13. 13

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  14. 14

    Reactでclsxを使用する方法

  15. 15

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  16. 16

    テキストフィールドの値に基づいて UIslider を移動します

  17. 17

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  20. 20

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  21. 21

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

ホットタグ

アーカイブ