Я вызываю функцию ReadImages()
в потоке t3
. вот мой код.Передача функции и аргументов в поток
#ReadImages
def ReadImages(path,queue1,queue2,queue3):
print('Training in thread...')
# Create a list of images and a list of corresponding names
(images, lables, names, id) = ([], [], {}, 0)
namess=[]
for (subdirs, dirs, files) in os.walk(fn_dir):
for subdir in dirs:
names[id] = subdir
namess.append(names[id])
print "Names[id]", names[id]
subjectpath = os.path.join(fn_dir, subdir)
for filename in os.listdir(subjectpath):
path = subjectpath + '/' + filename
lable = id
images.append(cv2.imread(path, 0))
lables.append(int(lable))
id += 1
(im_width, im_height) = (112, 92)
# Create a Numpy array from the two lists above
(images, lables) = [numpy.array(lis) for lis in [images, lables]]
print namess
for i in range(len(images)):
queue1.put(images[i])
for l in range(len(lables)):
queue2.put(lables[l])
for n in range(len(names)):
queue3.put(names[n])
return (images,lables)
вот моя реализация потока:
if __name__ == '__main__':
images=[]
lables=[]
names=[]
queue1 = Queue.Queue()
queue2 = Queue.Queue()
queue3 = Queue.Queue()
t3 = threading.Thread(target = ReadImages(path,queue1,queue2,queue3))
print"train", t3
t3.start()
while not queue1.empty():
images.append(queue1.get())
while not queue2.empty():
lables.append(queue2.get())
while not queue3.empty():
names.append(queue3.get())
этот код работает нормально, и я получаю данные из очереди по мере необходимости, но его вызывает исключение, и я не знаю, что является причиной что. Я хочу удалить это исключение. Как я могу это сделать? здесь является исключением Обучение в теме ... поезд
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: 'tuple' object is not callable
Похоже, что трассировка неполна, должна быть какая-то конкретная информация о том, где она терпит неудачу между 'self .__ target (* self .__ args, ** self .__ kwargs)' и 'TypeError: 'tuple' объект не вызываем' – Shane
't3 = threading.Thread (target = ReadImages (путь, queue1, queue2, queue3))' проблема в этой строке, она вызывает исключение при выполнении этого –
Да, это точно, но интерпретатор должен был сказать вам, какая строка он находится в функции 'ReadImages (путь, queue1, queue2, queue3)', которые работают с ошибкой – Shane