同じローカル マシンではなく、グリッド/クラスターでマルチプロセッシング パッケージを介して Python 関数を実行/実行できるかどうか疑問に思っています。これは、同じ機能を使用する必要がある何百ものジョブを作成し、DRMAA を介してローカル クラスターにファーム アウトするのに役立ちます。これが可能かどうか、または子プロセス/フォークを使用する意味があるかどうかはわかりません。
例やアドバイスは役に立ちます。
PS: python-list に相互投稿
ありがとう!-アビ
同じローカル マシンではなく、グリッド/クラスターでマルチプロセッシング パッケージを介して Python 関数を実行/実行できるかどうか疑問に思っています。これは、同じ機能を使用する必要がある何百ものジョブを作成し、DRMAA を介してローカル クラスターにファーム アウトするのに役立ちます。これが可能かどうか、または子プロセス/フォークを使用する意味があるかどうかはわかりません。
例やアドバイスは役に立ちます。
PS: python-list に相互投稿
ありがとう!-アビ
通常、これには 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()
multiprocessing
モジュールは主にローカル マシンで動作します。例外はリモート マネージャーです。
リモート マネージャーを使用する利点は、標準の python インストール以外に何も必要ないことです。ただし、クライアント コードをすべてのマシンに配布するなどの問題に対処する必要があります。そしてもちろん、すべてのマシンに python がインストールされている必要があります。
クラスターなどで実行するためのさまざまなオプションが多数あります。Python wiki の並列処理ページを参照してください。
Parallel Pythonが必要な場合があります。
もう 1 つの可能なオプションはiPythonです。彼らは素晴らしい並列処理のチュートリアルを持っています。