0

いくつかの機能を実行する fortranatoms.outファイルがあります。私はPython内からそのfortranファイルを呼び出しています:

values = subprocess.Popen(["./atoms.out", "./%s.klj" % test1, "./%s.out" % test1], stdout = subprocess.PIPE)

Python PPを見てきましたが、単一のジョブに n 個の CPU を使用するため、探しているものではないと思います。

fortran ファイルによって実行される計算は独立していないため、一緒に使用することはできません。python pp

したがって、私の質問は、多くのジョブを多くの異なる CPU に送信する方法です。たとえば、4 つの CPU で実行したい 7 つのファイルがあります。

したがって、各ジョブは次のように分散されます。

File1 -> CPU1
File2 -> CPU2
File3 -> CPU3
File4 -> CPU4

次に、CPU でジョブが終了すると、実行する残りの 3 つのファイルに置き換えられます。が に置き換えられたとします。したがって、ジョブの分布File1は次のようになります。CPU1File5

File5 -> CPU1
File2 -> CPU2
File3 -> CPU3
File4 -> CPU4

7 つのファイルでの fortran ファイルの実行が完了するまで、これを繰り返します。

4

1 に答える 1

5

このクラスを使用してmultiprocessing.pool.ThreadPool、(あなたの場合は) 4 つのスレッドで構成されるスレッド プールを作成します。subprocess.Popenなどを使用してタスクをプールに送信しますpool.map。次に、Python の 4 つのスレッドがそれぞれ 1 つの Fortran プロセスを生成します。

于 2012-09-10T12:41:59.900 に答える