Liste dizinindeki öğeler olduğundan, sınıf Observer'ın birçok iş parçacığını çalıştırmam gerekiyor. Python konsolunu çalıştırdığımda her şey yolunda gider."RuntimeError: thread .__ init __()" alt sınıflama iş parçacığı olarak adlandırılırken .Thread
class Observer(Thread):
def run(self):
naptime = random.randint(1,10)
print(self.name + ' starting, running for %ss.' % naptime)
time.sleep(naptime)
print(self.name + ' done')
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
Ama hataları olsun Gözlemci konuları yumurtlamaya gerekiyordu Master iplikten bunu çalıştığınızda. içinde
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()
çağrı Master.start
için sonuçlar:
RuntimeError: thread.__init__() not called
Bu bana garip görünüyor.
Her iki durum arasındaki farkın ne olduğunu anlayamıyorum.
Sorunumu çözen biri var mı?
Bir şekilde takip etme, bir hata oluşturmuyor ve nedenini anlamıyorum.
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()
Thread .__ init__ hatası nasıl denir? – JBernardo
: "self.dirlist" için "d" olmalıdır. Olduğu gibi, 'd için dlist:' bir global ifade eder. Uygun bir [örnek] (http://sscce.org/) olmak için, kod tamamlanmalıdır, yani 'Gözlemcinin' minimal bir şekilde uygulanmasını sağlamalı ve sadece kod kullanılmalıdır (python komutunu ve girintiyi tercümandan kopyalamayın). Örneği düzeltmek için sorunuzu düzenleyin. Son olarak, hangi Python sürümü ile çalışıyorsunuz? – outis