线程错误 - 太多args

时间:2013-05-27 12:54:57

标签: python python-multithreading

我有一个python类,我有一个方法,我想运行多个线程

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

3 个答案:

答案 0 :(得分:2)

成功

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

(注意outage之后的,(命令))。在你的情况下,args不是一个元组。

答案 1 :(得分:1)

您在,的创作中忘记了Thread

在python中执行(5)将导致整数5,而执行(5,)会变成元组,其中一个条目是整数{{ 1}}。

如果您将5更改为args=(outage),则应该按预期工作。

答案 2 :(得分: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
    """