Szisztok!
A kovetkezo problemam van: Komunikacio szalak kozott queue-val. Valami ilyesmit probalok megvalositani (a kod sokkal hosszabb es osszetettebb, szoval megprobaltam, csak az idevonatkoz reszt reprodukalni itt):
class CsvManage():
CsvReadNames(gettnameline):
# give back a list
class A.(threading.Thread):
def __ini__(self, csvget, csvput)
self.csvget = csvget
self.csvput = csvput
def run(self)
csvdata = CsvManage()
while 1:
try:
gettnameline = self.csvnameget.get(True, 0.05)
self.csvnameput.put(csvdata.CsvReadNames(gettnameline))
except Queue.Empty:
continue
class B.(threading.Thread):
def __ini__(self, searcheddir, csvnameget, csvnameput)
self.searcheddir = searcheddir
self.csvnameget = csvnameget
self.csvnameput = csvput
def run(self):
while 1
self.csvnameget.put(self.searcheddir)
csvfilenames = self.csvnameput.get()
print 'OK'
threadLock = threading.Lock()
threads = []
csvnameget = Queue.Queue()
csvnameput = Queue.Queue()
csvworking = A(csvnameget, csvnameput)
csvworking.start()
threads.append(csvworking)
TEF = B.(searcheddir, csvnameget, csvnameput)
TEF.start()
threads.append(TEF)
for t in threads:
t.join()
print "Exiting Main Thread"
Szoval : TEF a searcheddir str-et berakja a csvnameget queue-ba, ahonan a csvworking A class threat kiveszi es lefutatja a csvdata ahonan visszakap egy list-et. Ez eddig mukodik. A csvdata.CsvReadNames(gettnameline) a list amit vissza akarok adni a TEF-nek, szoval berakom a csvnameput queue-ba. De ez valami miatt nem mukodik. Mindenfele hibauzenet nelkul TEF nem lep tovabb a print 'OK'-ra. Valalmi otlet mi lehet az oka?
Ez az elso eset amikor Python Threat-kel dolgozok, szoval ha lehet ne hulyezetek le egybol.
- 1714 megtekintés