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

问题描述 投票:0回答:3

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

以下是我写的代码:

import threading

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

t = threading.Thread(target=f, args=(x=1,y=2,))
t.start()

我在第 6 行收到“x=1”的语法错误。 我想知道如何将关键字参数传递给目标函数。

python multithreading python-2.7 python-multithreading keyword-argument
3个回答
140
投票
t = threading.Thread(target=f, kwargs={'x': 1,'y': 2})

这将传递一个字典,其中关键字参数的名称作为键,参数值作为字典中的值。 上面的另一个答案不起作用,因为“x”和“y”在该范围内未定义。

另一个例子,这次是多重处理,同时传递位置参数和关键字参数:

使用的功能是:

def f(x, y, kw1=10, kw2='1'):
    pass

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

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

16
投票

你也可以直接将字典传递给 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()

0
投票

尝试将

args
替换为
kwargs={"x": 1, "y": 2}

© www.soinside.com 2019 - 2024. All rights reserved.