я могу использовать мультипроцессирование легко настроить параллельные вызовы на «Func», как это:питон многопроцессорных используя несколько аргументов
import multiprocessing
def func(tup):
(a, b) = tup
return str(a+b)
pool = multiprocessing.Pool()
tups = [ (1,2), (3,4), (5,6), (7,8)]
results = pool.imap(func, tups)
print ", ".join(results)
Давать результат:
3, 7, 11, 15
Проблема заключается в том, что моя фактическая функция " func "сложнее, чем пример здесь, поэтому я не хочу называть его одним аргументом« tup ». Я хочу несколько аргументов
, а также аргументы ключевых слов
. То, что я хочу сделать что-то вроде ниже, но «*» распаковки внутри списка не работает
(и не поддерживают ключевые слова либо)
:
import multiprocessing
def func(a, b):
return str(a+b)
pool = multiprocessing.Pool()
tups = [ *(1,2), *(3,4), *(5,6), *(7,8)]
results = pool.imap(func, tups)
print ", ".join(results)
Итак ... есть ли способ чтобы получить всю мощь вызовов функций python при параллельной обработке?
Следует помнить, что '(i) map' будет пытаться распределять ваши аргументы равномерно. Таким образом, любой список a должен соответствовать любому списку b. В этом случае список кортежей, который вы делаете сейчас, может быть лучшим способом. – Evert
Не могли бы вы дать более ясный пример того, что эти другие аргументы, включая аргументы ключевого слова, являются? – Evert
Во-вторых, я думаю, что могу жить без аргументов ключевого слова. По крайней мере, на данный момент, я хочу, чтобы возможность передавать несколько параметров для функции func, без «func», чтобы сделать немного грязную работу по распаковке кортежа. Я знаю, что это не очень важно, но я покажу код для людей, не являющихся питонами, поэтому любое упрощение помогает. –