4

pythonデータセットを入力としてロードして分析するコードを書きたいのですが。

データを分析する5つの並列プロセスがあります-各プロセスは異なる方法でデータを処理します-独自の方法で。

処理を開始する前に、masterスクリプト(すべての異なるサブプロセスを「開始」するスクリプト)が空のリストを定義します。

さまざまなプロセスすべてに、上記の同じリストに出力を書き込んでもらいたい(つまり、各プロセスは、masterスクリプトで定義されたリストを直接操作できるようになります)。

つまり、そのリストの最初の値が変更された場合process1、他のすべてのプロセス(実行中)は、そのリストの最初の値が変更されたことを確認します。


この問題を解決するには、2つの異なるpythonモジュールを使用できるとmultiprocessing思いますzeroMQ

この場合、一方を他方よりも好む理由はありますか?同じサーバーでスクリプトを実行する代わりに、master異なる(複数の)サーバー間でプロセスを分割する場合、答えは変わりますか?

(それが問題になる場合は、私はを使用していますLinux

4

2 に答える 2

5

リンゴとオレンジを比較することはできません。

マルチプロセッシングは、多くのプロセスをフォークするためのライブラリです。

zmqは、プロセスがメッセージを使用して通信できるようにするライブラリです。

彼らは異なる仕事をします。

于 2011-07-05T02:17:02.130 に答える
1

これらが2つの選択肢だけであり、負荷を複数のマシンに分散することが確実である場合、ZeroMQは2つの選択肢のうちの唯一の選択肢です。

Pythonマルチプロセッシングモジュールは、単一のマシン上のプロセス/コア間で負荷を分散するためのものです。私の知る限り、マルチプロセッシングモジュールの基礎となるネットワーク化されたプロトコルはなく、これは添付のドキュメントの最初の段落で示されています。

ZeroMQは、IPCプロトコルを使用して単一のマシンで同様のプロセス間メッセージングに使用できますが、異なるマシンで実行されているプロセス間でもメッセージを送信できるネットワークベースのプロトコルも備えています。

とは言うものの、Pythonを使用して分散プログラムを実装するための多くの可能性のうち、選択肢を任意に2つに絞り込んだように見えるため、この質問にはXY問題のわずかな色合いがあります。

ここで私の答えを編集するのは正しくなく、受け入れられた答えを削除することはできないので、誰かがそれを修正したい場合に備えて、それをwikiに変換します。短編小説は、私が急いでドキュメントを読み間違えたということです。Pythonマルチプロセッシングは、ネットワーク境界を越えたプロセス間通信をサポートします。ZeroMQとの大きな違いの1つは、ZeroMQがプラットフォームに依存しないように設計されているため、異なるプラットフォームでクライアント/サーバーエージェントを混在させることができるのに対し、クライアント/サーバープロセスがPythonに結合されている場合、Pythonマルチプロセッシングはバッテリーを含むオプションです。

于 2011-07-05T04:35:47.703 に答える