我希望在创建 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”的语法错误。 我想知道如何将关键字参数传递给目标函数。
尝试用 kwargs={x: 1, y: 2}代替 args。
kwargs={x: 1, y: 2}
args
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'})
你也可以直接把字典递给 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()