34

假设我有一个看起来像这样的函数:

def _thread_function(arg1, arg2=None, arg3=None):
    #Random code

现在我想使用该函数创建一个线程,并给它 arg2 但不是 arg3。我正在尝试如下:

#Note: in this code block I have already set a variable called arg1 and a variable called arg2
threading.Thread(target=self._thread_function, args=(arg1, arg2=arg2), name="thread_function").start()

上面的代码给了我一个语法错误。如何修复它以便可以将参数作为 arg2 传递给线程?

4

2 回答 2

67

使用kwargs 参数

threading.Thread(target=self._thread_function, args=(arg1,),
                 kwargs={'arg2':arg2}, name='thread_function').start()
于 2011-08-01T21:10:38.227 回答
2

您还可以使用 lambda 传递参数

threading.Thread(target=lambda: self._thread_function(arg1, arg2=arg2, arg3=arg3)).start()
于 2021-08-23T13:25:10.527 回答