在Python threading.Thread中将关键字参数传递给目标函数

xen*_*ato 34 python multithreading kwargs python-multithreading python-2.7

我想在创建Thread对象时将命名参数传递给目标函数.

以下是我写的代码:

import threading

def f(x=None, y=None):
    print x,y

t = threading.Thread(target=f, args=(x=1,y=2,))
t.start()
Run Code Online (Sandbox Code Playgroud)

我在第6行得到了"x = 1"的语法错误.我想知道如何将关键字参数传递给目标函数.

vla*_*rus 55

t = threading.Thread(target=f, kwargs={'x': 1,'y': 2})
Run Code Online (Sandbox Code Playgroud)

这将传递一个字典,其中关键字参数'names作为键,参数值作为字典中的值.上面的另一个答案是行不通的,因为在该范围内未定义"x"和"y".

另一个例子,这次使用多处理,传递位置和关键字参数:

使用的功能是:

def f(x, y, kw1=10, kw2='1'):
    pass
Run Code Online (Sandbox Code Playgroud)

然后在使用多处理调用时:

p = multiprocessing.Process(target=f, args=('a1', 2,), kwargs={'kw1': 1, 'kw2': '2'})
Run Code Online (Sandbox Code Playgroud)

  • 请考虑编辑您的帖子,添加更多关于您的代码的作用以及为什么它可以解决问题的解释。大多数只包含代码(即使它有效)的答案通常不会帮助OP理解他们的问题。 (3认同)

Dan*_*iel 6

您也可以直接将字典传递给kwargs:

import threading

def f(x=None, y=None):
    print x,y

my_dict = {'x':1, 'y':2}
t = threading.Thread(target=f, kwargs=my_dict)
t.start()
Run Code Online (Sandbox Code Playgroud)