2013-05-27 7 views
0

У меня есть класс питона, в котором у меня есть метод, который я хочу запустить несколько потоковпотоковая ошибка - слишком много арга

class OutageTool: 

def main(self): 
    outages = [{ 
     'var1' : 1, 
     'var2' : 2, 
    }, 
    { 
     'var1' : 3, 
     'var2' : 4, 
    }] 
    for outage in outages: 
      t = threading.Thread(target=self.outage_thread, args=(outage)) 
      t.start() 

def outage_thread(self, outage): 
    """ 
    some code here 
    """ 

Когда я запускаю этот код я получаю ошибку

TypeError: outage_thread() takes exactly 2 arguments (3 given) 

Я новичок в python и буду очень благодарен за любые идеи о том, что здесь происходит.

C

ответ

1

Вы создали , при создании Thread.

В питона делает (5) приведет к целому 5, при этом (5,) превратится в кортеж с одной записью, которая является целым числом 5.

Если вы изменили свой args=(outage) на args=(outage,), он должен работать должным образом.

2

Сделать

t = threading.Thread(target=self.outage_thread, args=(outage,)) 

(Обратите внимание на то, (команда) после outage). В вашем случае args не является кортежем.

1

Я считаю, что ошибка может заключаться в том, что args = (отключение) не считается кортежем.

Это должно исправить это.

class OutageTool: 

    def main(self): 
     outages = [{ 
      'var1' : 1, 
      'var2' : 2, 
     }, 
     { 
      'var1' : 3, 
      'var2' : 4, 
     }] 
     for outage in outages: 
       t = threading.Thread(target=self.outage_thread, args=(outage,)) 
       t.start() 

def outage_thread(self, outage): 
    """ 
    some code here 
    """ 
Смежные вопросы