複数のファイルでPython関数を実行するために繰り返すよりも高速な方法はありますか?

複数のファイルでPython関数を実行するために繰り返すよりも高速な方法はありますか?

以下のようにforループを使用して100個のファイルに対してPython関数を実行しようとしています。このプロセスは非常に遅いようです。 GPUが搭載されたHPCコンピュータを使用しているので、このプロセスをより高速にする方法があるかどうか疑問に思います。

#!/usr/bin/env bash

FILES="/directory_with_files/*.ply"
for i in $FILES; 
do python3 function.py -file $i --odir /output_directory --verbose; done

ベストアンサー1

プログラム自体がすでにGPUを使用していない限り、GPUは役に立ちません。しかし、私が主に使用するツールはGNUパラレル。多くのフラグがありますが、あなたのコマンドは次のようになると思います。

$ find /directory_with_files -name '*.ply' | parallel "python3 function.py -file {} --odir /output_directory --verbose"

デフォルトでは、コアごとに1つずつ、適切であると判断されるすべてのタスクを並列に実行します。

噂があるリモートジョブを実行するためにSSHを介してそれを使用することも可能でなければなりませんが、まだ試したことはありません。

おすすめ記事