0

いくつかのスレッドを実行したいメソッドがある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

4

3 に答える 3

2

成功する

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

( の後の , (コマンド) に注意してくださいoutage)。あなたの場合、 args はタプルではありません。

于 2013-05-27T12:59:42.980 に答える
1

,の作成で を忘れましたThread

Pythonでは、実行(5)すると整数が得られますが、実行すると、整数である 1 つのエントリを持つタプルになります。5(5,)5

に変更するargs=(outage)args=(outage,)、期待どおりに動作するはずです。

于 2013-05-27T13:00:01.540 に答える
1

エラーは、 args=(outage) がタプルと見なされていないという事実にあると思います。

これで修正されるはずです。

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
    """
于 2013-05-27T13:00:12.430 に答える