Threadを使うときの"TypeError: function1() got multiple values for argument 'arg1'"
threading.Threadを使って引数持つ関数を実行すると、以下のようなエラーになることがある。
run()に直接関数を記述せず、すでにある関数をrun()の中で実行しようとすると起きる。
"TypeError: function1() got multiple values for argument 'arg1'"
原因はよくわからない。
とりあえず回避した例。func1でself.kwargsを使うのと何が違うのか・・・。
# -*- coding: utf-8 -*- import threading class MyThread(threading.Thread): def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, daemon=None): #threading.Threadとしてのコンストラクタ threading.Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs={}, daemon=None) #threadの中で使う引数(辞書) self.kwargs = kwargs return def func1(self,*args,**kwargs): x=kwargs["kwargs"] a=x["a"] b=x["b"] c=x["c"] print("thread main fun1",a,b,c) return def run(self): #実際の処理は、func1で行う。 self.func1(kwargs=self.kwargs) return def main(): kwargs={"a":1,"b":2,"c":3} t=MyThread(kwargs=kwargs) t.start() if __name__== '__main__': main()