Pasa los argumentos de palabras clave a la función de destino en el subproceso de Python.

Quiero pasar argumentos con nombre a la función de destino, al crear un objeto Thread.

El siguiente es el código que he escrito:

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

Recibo un error de syntax para “x = 1”, en la Línea 6. Quiero saber cómo puedo pasar los argumentos de palabras clave a la función de destino.

 t = threading.Thread(target=f, kwargs={'x': 1,'y': 2}) 

esto pasará un diccionario con los nombres de los argumentos de palabras clave como claves y los valores de los argumentos como valores en el diccionario. la otra respuesta anterior no funcionará, porque la “x” y la “y” no están definidas en ese ámbito.

otro ejemplo, esta vez con multiprocesamiento, pasando argumentos tanto posicionales como de palabras clave:

La función utilizada es:

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

y luego cuando se llama utilizando multiprocesamiento:

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

También puedes pasar un diccionario directamente a 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() 

Intente reemplazar args con kwargs={x: 1, y: 2} .