Je veux passer des arguments nommés à la fonction cible, tout en créant un objet Thread.
Voici le code que j'ai écrit:
import threading
def f(x=None, y=None):
print x,y
t = threading.Thread(target=f, args=(x=1,y=2,))
t.start()
J'obtiens une erreur de syntaxe pour "x = 1", à la ligne 6. Je veux savoir comment je peux passer des arguments de mots clés à la fonction cible.
t = threading.Thread(target=f, kwargs={'x': 1,'y': 2})
cela passera un dictionnaire avec les noms des arguments de mot-clé comme clés et les valeurs d'argument comme valeurs dans le dictionnaire. l'autre réponse ci-dessus ne fonctionnera pas, car les "x" et "y" ne sont pas définis dans cette portée.
un autre exemple, cette fois avec le multitraitement, en passant à la fois des arguments positionnels et des mots clés:
la fonction utilisée étant:
def f(x, y, kw1=10, kw2='1'):
pass
puis lorsqu'il est appelé à l'aide du multitraitement:
p = multiprocessing.Process(target=f, args=('a1', 2,), kwargs={'kw1': 1, 'kw2': '2'})
Vous pouvez également passer un dictionnaire directement à 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()
Essayez de remplacer args
par kwargs={x: 1, y: 2}
.