私は現在のものを除いて、配列内のすべてのスレッド(Python2のスレッドモジュール)に片方向のメッセージを送る必要があるPythonでアプリケーションを開発しています糸。私は変数を試しましたが、それはすべてのスレッドが送信者以外のすべてのスレッドではなく応答することになります。送信者を除くすべてのスレッドでPythonの片方向メッセージを送信
このようにメッセージを送信する最も良い方法は何ですか?
私は現在のものを除いて、配列内のすべてのスレッド(Python2のスレッドモジュール)に片方向のメッセージを送る必要があるPythonでアプリケーションを開発しています糸。私は変数を試しましたが、それはすべてのスレッドが送信者以外のすべてのスレッドではなく応答することになります。送信者を除くすべてのスレッドでPythonの片方向メッセージを送信
このようにメッセージを送信する最も良い方法は何ですか?
「メッセージ」を(thread_id, 'message')
のタプルにして、それをすべてのスレッドに送信しないでください。メッセージを送信したスレッドは、それ自身のthread_id
のメッセージを無視できます。
これは、キューのためのものです。各スレッドにQueueを与え、あなた自身のものを除いてすべてのスレッドに書き込みます。
現在のスレッド以外のすべてのスレッドに常に通知している場合は、すべてのスレッドが反復処理して(そして自分のメッセージを無視する)共有イベントログを持つ方がはるかに効率的です。 – Amber
しかし、スレッド自体の中からスレッドのIDを取得する方法はありますか? – RichardG
http://docs.python.org/library/threading.html#threading.Thread.ident、またはスレッドの初期化の一部として渡します。 – Amber
私は初期化を通してパラメータを送信することに別の問題がありますが、どのパラメータがスレッドのdefに送られているのかわかりません。私がargs =( "hello")をdefを使ってイニシャライザに送ると、defが1ではなく5つの引数をとるというTypeErrorsです。 – RichardG