2017-12-02 94 views
0

私はPythonスクリプトの初心者です。関数が複数回呼び出され、それぞれ異なる引数セットが渡されるスクリプトがあります。実行は順番に行われています。これらの関数を呼び出すときに依存関係がないので、これらの関数を並列実行するために、bsubコマンドを使用してこれらの関数を呼び出して、複数のマシン上で実行してより高速に実行することを考えました。bsubコマンドを使用して引数を使用して関数を呼び出す

def func(a,b): 
    do_something... 

bsub -n2 func(A1、B1);

bsub -n2 func(A2、B2);

bsub -n2 func(A3、B3);

私は以下のエラー見ています:私もこれは同じマシン上で複数のジョブを立ち上げるの結果インポート処理 をマルチプロセッシングから を使用してマルチプロセッシングを使用してみました予期しないトークン近く

構文エラー `(」

をあなたのいずれかが同じことを行うには良い方法がある場合は、同じにいくつかの光を投げてくださいすることができたの実行が遅くなるかもしれません。

答えて

0

私はあなたのシェルのコマンドでPythonのコマンドを混在させていると思います。それらは同じものではないので、Python関数呼び出しをbsubに渡すことも、bsubを直接Pythonコードに使用することもできません。

おそらく、関数を呼び出すスクリプトを作成し、その上bsubを使用しますが、コマンドラインはおそらく(my_script.pyの内側に起こって関数呼び出し付き)bsub -n2 my_script.pyようなものにする必要がありますすることができます。

残念ながら、使用しているbsubプログラムについては何も知らないので、どのように使用してスクリプトに異なる引数を渡すことができるのかわかりませんPython関数に渡します)。おそらくそのドキュメントを読むべきです。

また、クラスタアーキテクチャとのインターフェイスに使用できるPythonライブラリがある可能性もあります。並列に複数のシステム上で任意のPythonコードを実行できるかもしれません。

+0

私はpython subprocess.Popen()で、Pythonとシェルコマンドの混在があったことに同意します.Popen()では、コマンドが実行される必要のある作業ディレクトリをオプションで指定できます特定のホストマシン上でジョブを実行するには...関数Aはマシン 'A'上で、関数Bはマシン 'B'上などで実行されています。 –

+0

特殊なライブラリを使用していない限り、Pythonは完全になりますあなたの別のマシンを知らない。 'subprocess.POpen'は単一のマシン上でしか動作しませんが、' bsub'のようなコマンドを実行して別のマシンでプロセスを起動することができます。 – Blckknght

関連する問題