2011-11-13 13 views
0

私はソケットを介してデータを送信するスレッドを制御するためにスレッドモジュールを使用していますが、使用するスレッドにデータを渡す適切なソリューションが見つかりません。私はOverriding python threading.Thread.run()のようなものを試しましたが、うまく動作していないようです。誰かが何か提案があれば、私は何かを試してうれしいです:)スレッドに変数を渡すPython

ありがとう!

答えて

2

あなたはこれを後ろ向きに考えています。ソケットを介してデータを送信しているスレッドであるという事実を忘れてしまいます。データはスレッドに到達する必要はなく、ソケット上のデータを送信するロジックに到達する必要があります。

たとえば、ソケットを介して送信する必要があるものを保持するキューを持つことができます。ソケット書込みコードは、キューからメッセージを取り出して、それらをソケットに送ります。他のコードはこのキューにメッセージを入れます。ソケットにメッセージを送信する必要のあるコードは、送信を行うスレッドがあることを知っていたり、気にしてはいけません。

+0

さらに良い:)ありがとう – Trent

1

これにメッセージキューを使用します。 Pythonにはスレッド間でデータを渡すモジュールQueueがありますが、0MQ http://www.zeromq.orgのようなサードパーティのライブラリを使用すると、スレッドを別々のプロセスに分割することができ、同じように動作します。

マルチプロセッシングはスレッド化よりも簡単ですが、スレッド化を使用する必要がある場合はできるだけデータをロックしたり共有したりしないでください。代わりに、Queueのような事前作成されたモジュールを使用して、微妙なバグが発生する可能性のある方法を制限してください。