2016-10-21 13 views
0

アプリケーションと3つのデーモンスレッドとの間でスレッド操作機能に違いがありますか?の4つのアプリケーション:キュー/パイプアプリケーションとキュー/パイプアプリケーションから読み取る3つのデーモンスレッドアプリケーション'内部'/'外部'デーモンスレッドを持つアプリケーションの機能の相違点

いずれのアプリケーションもブロック/同期を使用しません。その日の終わりに、オペレーティングシステムは、スレッドの実行を許可するかどうかと、どれくらいの時間を待つかを決定します。ここで機能に他の違いがありますか、それとも本質的に同じですか?

汎用アプリケーション(同期なしまたはブロッキング):

  • '株式市場のフィード'、キュー:StockTradeメッセージ(dictonaries)
  • 'TradingStrategy' 1つのデーモンスレッド:点検、キューからプルメッセージを処理して取引を実行する
  • 'TradingStrategy' 1デーモンスレッド:キューから引き出し、メッセージを検査して取引を実行
  • 'TradingStrategy' 1デーモンTh読み:キューから引いて、メッセージを検査して行う取引

代替アーキテクチャ:

フィードアプリケーション(なしマルチスレッド):

  • 「株式市場フィード 'キューまたはパイプ:StockTradeメッセージ(二連)。 以外のプロセスからキューにアクセスできますか?私は名前付きパイプができることを知っているが、キューをすることができますか?

取引アプリケーション(NOはマルチスレッド):

  • 'TradingStrategy':フィード(?パイプ/キュー)と相互作用は、メッセージを検査し、取引
を行います

取引アプリケーション(マルチスレッドなし):

  • 'TradingStrategy' は:フィードと相互作用

取引アプリケーションのメッセージを検査し、実行取引(NOマルチスレッド)(パイプ/キュー):

  • 'をTradingStrategy ':フィード(パイプ?/キュー)、メッセージを検査して行う取引は
+0

代替アーチでは、それらはスレッドですか?またはプロセス? –

+0

@JohnMee現在、各アプリケーションはマルチスレッドを使用していません。私はそれを示すために質問を更新します。 –

+0

したがって、4つのスレッドで1つのプロセスを実行するか、それぞれに1つのスレッドで4つのプロセスを実行するかの違いがあるかどうかを確認していますか? –

答えて

1

はい、2つのオプションが全く異なっています。しかし、その違いを説明しようとするとすぐに複雑になります。スレッドとプロセスの違いを調査して読んでください。頭を真っ直ぐにしてください。

ここで、特定のシナリオでは、キューがすべてのワーカースレッドと同じプロセス内にあるため、実際には「マルチプロセッシングキュー」とはプロセスの1つのスレッド内にあるPythonキューのインスタンスを意味します。キューの同じインスタンスにアクセスして共有することができます。

しかし、ワーカーがすべて別々のプロセスである場合、共有メモリによってキューにアクセスすることはできず、そのキューにアクセスするために何らかの形式のプロセス間通信が必要です。

実際には、redisまたはzeromqのようなものをあなたのキューに入れて、それから話すためのPythonプログラムをビルドし、必要に応じて少数ずつ、またはいくつもコピーしてください。

+0

ありがとう、あなたは1ライター(マーケットフィード)と3リーダー(トレーディング戦略アプリ)との全二重の名前付きパイプを持つ可能性がありますか?また、dbusまたはdbus glibを考慮してください。 –

+0

@ JakeM申し訳ありませんが、私はグーグルで、あなたのために解釈しようとしています。しかし、私はPythonのマルチプロセッシングライブラリがそれほど恐ろしいものではないと言います。ちょうどそれを試してみて、あなたができることとできないことを見てみましょう。感謝しなければならないことの1つは、すべてをシンクリング/シリアライズすることによって動作することです。 –

関連する問題