リストdirlistの要素と同じ数のObserverクラスのスレッドを実行する必要があります。 私はPythonコンソールを実行すると大丈夫です。Threading.Threadをサブクラス化するときにRuntimeError:thread .__ init __()が呼び出されない
しかし、Observerスレッドを生成するマスタスレッドからこのスレッドを実行しようとすると、エラーが発生します。中
class Master(Thread):
def __init__(self, dirlist):
self.dirlist = dirlist
def run(self):
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
while True:
time.sleep(3600)
master_thread = Master(dirlist)
master_thread.start()
Master.start
結果への呼び出し:
RuntimeError: thread.__init__() not called
これは私には奇妙に見えます。
私は両者の違いを理解できません。
誰かが私の問題の解決策を見つけ出すことができますか?
どういうわけか、次のようなエラーは発生しません。理由はわかりません。
class Master(Thread):
def set(self, dirlist):
self.dirlist = dirlist
def run(self):
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
while True:
time.sleep(3600)
master_thread = Master()
master_thread.set(dirlist)
master_thread.start()
スレッドについて.__ init__はエラーと言われましたか? – JBernardo
'for d in self.dirlist:'にする必要があります。それがそうであるように、 'dのdirlist:'はグローバルを指します。適切な[サンプル](http://sscce.org/)になるためには、コードは完全でなければなりません。つまり、Observerの実装を最小限にする必要があります。 Pythonプロンプトとインデントをインタプリタからコピーしないことを意味します)。サンプルを修正するために質問を編集してください。最後に、どのバージョンのPythonを使用していますか? – outis