Передать аргументы ключевого слова целевой функции в потоке Python.

Я хочу передать именованные аргументы целевой функции, создав объект Thread.

Ниже приведен код, который я написал:

import threading def f(x=None, y=None): print x,y t = threading.Thread(target=f, args=(x=1,y=2,)) t.start() 

Я получаю синтаксическую ошибку для «x = 1» в строке 6. Я хочу знать, как передать аргументы ключевого слова целевой функции.

 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'}) 

Попробуйте заменить args на kwargs={x: 1, y: 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()