Передать аргументы ключевого слова целевой функции в потоке 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. Я хочу знать, как передать аргументы ключевого слова целевой функции.

+15
18 июн. '15 в 10:45
источник поделиться
3 ответа
t = threading.Thread(target=f, kwargs={'x': 1,'y': 2})

это передаст словарь с именами аргументов ключевого слова в качестве ключей и значений аргументов в качестве значений в словаре. другой ответ выше не будет работать, потому что "x" и "y" undefined в этой области.

другой пример, на этот раз с многопроцессорной обработкой, передающий как аргументы positional, так и ключевые слова:

используемая функция:

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

а затем при вызове с использованием многопроцессорности:

p = multiprocessing.Process(target=f, args=('a1', 2,), kwargs={'kw1': 1, 'kw2': '2'})
+29
22 сент. '15 в 13:15
источник

Вы также можете просто перейти к словарю прямо до 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()
+3
04 июл. '17 в 22:57
источник

Попробуйте заменить args на kwargs={x: 1, y: 2}.

+1
18 июн. '15 в 10:47
источник

Посмотрите другие вопросы по меткам или Задайте вопрос