如何向线程传递参数?

38

我有以下所示的test()函数:

def test(arg1, arg2=None, arg3=None):

现在,我尝试使用test()创建一个线程,并仅提供arg1arg2,而不是像下面显示的那样提供arg3:

threading.Thread(target=test, args=(arg1, arg2=arg2)).start()

但是,我得到了语法错误。我如何解决这个错误,以便我可以将参数作为arg2传递给线程?

2个回答

78

使用 kwargs 参数:

threading.Thread(target=test, args=(arg1,), kwargs={'arg2':arg2}).start()

6

您也可以使用 lambda 来传递参数。

threading.Thread(target=lambda: test(arg1, arg2=arg2, arg3=arg3)).start()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接