Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python threading.Thread中将关键字参数传递给目标函数_Python_Multithreading_Python 2.7_Python Multithreading_Keyword Argument - Fatal编程技术网

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

在Python threading.Thread中将关键字参数传递给目标函数,python,multithreading,python-2.7,python-multithreading,keyword-argument,Python,Multithreading,Python 2.7,Python Multithreading,Keyword Argument,我想在创建线程对象时将命名参数传递给目标函数 以下是我编写的代码: 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 t = threading.Thread(target=f, kwar

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

以下是我编写的代码:

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

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()

你读过了吗?你不需要使用参数的名称,你可以使用一个简单的元组:<代码> t= thord.th线(目标=f,args=(1,2,))< /> >请考虑编辑你的帖子,以进一步解释你的代码所做的以及为什么它会解决这个问题。一个大部分只包含代码的答案(即使它是有效的)通常不会帮助OP理解他们的问题。我对vladosaurus的答案没有问题。时间越长并不总是越有帮助;简洁是最重要的。在这种情况下,它可以在几秒钟内拯救我的一天,当然不是。ITYM
{'x':1,'y':2}
,这是一个巨大的差异。