Использование Pool.map(function, args)
Есть функция вида:
result, number = calculate(model, inputdata, outputdata, outputdatatype, log):
...
которая позволяет работать с одним входным файлом:
(inputdata = example.wav; outputdata = example.txt, outputdatatype = txt, log = INFO)
-несколько аргументов.
Но когда файлов много мне посоветовали использовать Pool.map:
p = Pool(4)
result, number = p.starmap(calculate, [(example1.wav, example1.txt, txt, INFO), (example2.wav, example2.txt, txt, INFO), ..., (example_N.wav, example_N.txt, txt, INFO)])
но это не работает, подскажите как туда передать эти аргументы правильно
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Во-первых вы не передаёте первый аргумент model. Во-вторых вы должны проитерироваться по результатам, их же у вас будет столько, сколько раз вы по факту будете вызывать функцию с разными аргументами. И в-третьих нужно закрыть Pool, лучше с помощью контекстного менеджера. Как-то так:
with Pool(4) as p:
for result, number in p.starmap(calculate, [(model, example1.wav, example1.txt, txt, INFO), (model, example2.wav, example2.txt, txt, INFO), ..., (model, example_N.wav, example_N.txt, txt, INFO)]):
print(result, number)