tutorial threads threading thread start manage get_ident example current_thread and python multithreading python-2.7 python-multithreading kwargs

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