3

同じローカル マシンではなく、グリッド/クラスターでマルチプロセッシング パッケージを介して Python 関数を実行/実行できるかどうか疑問に思っています。これは、同じ機能を使用する必要がある何百ものジョブを作成し、DRMAA を介してローカル クラスターにファーム アウトするのに役立ちます。これが可能かどうか、または子プロセス/フォークを使用する意味があるかどうかはわかりません。

例やアドバイスは役に立ちます。

PS: python-list に相互投稿

ありがとう!-アビ

4

4 に答える 4

2

通常、これには MPI などを使用します。

ノードにタスクを割り当て、ノードの活性をチェックするだけのアービターを用意します。 (プール) すべてのスクリプトは同一で、必要なすべてのコードを含み、すべてのノードに配布する必要があります。

設定が完了したら、各ノードのタスクとパラメーター (メソッド名 + 引数) のキューを維持して、結果をアービターに戻します。

単純な例:

def do_something(arg1, arg2):
  return arg1 + arg2

def get_next_task():
  task, args = server.retrieve_task()
  result = task(args)
  server.queue_result(result, node_id)

if __name__ == '__main__':
  if sys.argv[1] == '-a': # arbiter
    arbiter()
  if sys.argv[1] == '-n': # node
    run_node()
于 2012-05-17T19:45:30.803 に答える
0

multiprocessingモジュールはにローカル マシンで動作します。例外はリモート マネージャーです。

リモート マネージャーを使用する利点は、標準の python インストール以外に何も必要ないことです。ただし、クライアント コードをすべてのマシンに配布するなどの問題に対処する必要があります。そしてもちろん、すべてのマシンに python がインストールされている必要があります。

クラスターなどで実行するためのさまざまなオプションが多数あります。Python wiki の並列処理ページを参照してください。

于 2012-05-17T23:09:33.750 に答える
0

Parallel Pythonが必要な場合があります。

于 2012-05-18T16:32:43.647 に答える
0

もう 1 つの可能なオプションはiPythonです。彼らは素晴らしい並列処理のチュートリアルを持っています。

于 2012-05-21T03:02:56.197 に答える