0

1 つのクラスAと 2 つのスレッドBC.

aのインスタンスを作成しますA。次に、両方のスレッドを開始します。最初BC.

Bbyで関数func_nameを呼び出します。ここまでは順調。Aa.func_name()

C一方、リストである結果にアクセスする必要があります。たとえば、クラスlist_a内で定義され、インスタンスによってアクセスされます。func_name()Aa

このような for ループを使用して文字列のセットを一致させる必要があります。

if self.string_variable in a.list_a:
    print "found"

しかし、それは私にエラーを与えます:

Aインスタンスには属性がありませんlist_a

誰か助けてくれませんか?

4

1 に答える 1

2

ある種の同期プリミティブが必要になります。正確には、設計と要件の詳細に依存します。

a.list_bリストが一度作成され、後で変更されないと仮定すると、スレッドは戻るCまで待機する必要がありa.func_name()ます。threading.Eventこれは、インスタンスを に追加することで実現できますA。でA.__init__()、追加

self.event = threading.Event()

の最後にA.func_name()、追加

self.event.set()

スレッドCが にアクセスしようとする前a.list_bに、追加

a.event.wait()

a.func_name()スレッドで終了するまで待機しますB

一般に、スレッド間の同期は複雑なトピックであり、エラーが発生しやすいタスクです。これは、本当に必要な場合にのみ実行してください。

于 2012-07-26T12:38:02.047 に答える