2017-01-04 1 views
1

私は、デーモンスレッドを実行するtkinterアプリケーションを構築しています。それにはmainloop()があります。スレッド間の共有データの大部分はキューを経由しています。Pythonスレッド:スレッドが読み取り専用にするデータを表現する方法は?

別のスレッドクラスを別の.pyファイルに作成しました。これをメインファイルにインポートしています。

メインファイルでは、ユーザーがGUIを使用して更新するSETTINGS dictがあります。また、変更していない間に読み込めるようにするには別のスレッドが必要です。

私は約RLockと考えましたが、私の理解からは通常両方のスレッドで使用されており、将来理解するのは少し混乱するかもしれません。

私は単純なものを探していますが、Pythonの組み込みソリューションでなければなりません。

EDIT:もう1つのスレッドが常にdictにアクセスし、メインスレッドがそれを更新するときを意識してはいけません。

+0

他のスレッドが設定のコピーにアクセスする可能性があります。 –

+0

可能な限り速くなるようにコードを作成する必要があります。同じ情報の他のコピーを作成したくないです。また、私は、他のスレッドが、それを繰り返し送信するためにメインスレッドなしで情報を読むことができるようにする必要があります。 – galah92

+0

'collections.UserDict'のサブクラスを使用して所有者スレッドのIDを格納し、' '__setitem__''で現在のスレッドが所有者スレッドであることを確認できます。スレッドが書き込みしようとするとどうなりますか?例外を提起する?黙って失敗する? – daragua

答えて

0

メイクSETTINGSグローバル変数。

ユーザーが更新されているため、スレッドの安全性に問題が生じることはありません。そして、あなたが望む他の場所で変数を読み込むだけです。

+0

しかし、それはどのように他のスレッドに見えるでしょうか?このスレッドは別のモジュールで宣言されたクラスです(私は直接インポートし、メインモジュールでinitを呼び出します) – galah92

+0

あなたのスレッド '__init__'に新しい引数を追加し、それをスレッドに渡します – Shane

関連する問題