2016-12-10 55 views
0

スレッドで関数ReadImages()を呼び出しています。ここに私のコードです。ここスレッドに関数と引数を渡す

#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 
+0

トレースバックが不完全なようですが、 'self .__ target(* self .__ args、** self .__ kwargs)'と 'TypeError: 'tuple'オブジェクトは呼び出し可能ではありません – Shane

+0

't3 = threading.Thread(target = ReadImages(path、queue1、queue2、queue3))'問題はこの行にあり、これを実行すると例外が発生します –

+0

ええ、確かですが、通訳者はあなたに – Shane

答えて

0

である私は、コードのあなたの第七百五十四ラインがどこにあるか正確にはわからないが、ダブルチェック。例えば((x、y)、(a、b)、(p、q))である。

+0

't3 = threading.Thread(target = ReadImages(path、queue1、queue2、queue3))問題がこの行にある'に実行されている関数 'ReadImages(path、queue1、queue2、queue3)これを実行すると例外が発生する –

関連する問題