threads - Pasa los argumentos de palabras clave a la función de destino en el subproceso de Python.
threading current_thread() (3)
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 sintaxis 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.
Intente reemplazar args
con kwargs={x: 1, y: 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()
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''})