Эта проблема была опубликована несколько раз здесь в stackoverflow, но ни один из них не мог помочь мне, поскольку мой случай очень конкретен c.
У меня есть функция Myfunction (p1, p2, p3, p4) для выполнения которого требуется 4 параметра.
Мне нужно запустить Myfunction многопроцессорным способом.
Я использую concurrent.futures.ProcessPoolExecutor для выполнения этой работы.
Я знаю, как передать список в качестве аргумента в файле executor.map (Myfunction, arguments)
Но на этот раз у меня есть список кортежей, который представляет собой список из 4 моих аргументов для моей многопроцессорной обработки.
Вот мой код:
def Myfunction(p_udid,p_systemPort,p_deviceName, p_version, p_os):
desired_caps = {}
desired_caps['platformName'] = p_os
desired_caps['platformVersion'] = p_version
desired_caps['deviceName'] = p_deviceName
desired_caps['udid'] = p_udid
desired_caps['noReset'] = 'true'
if __name__ == '__main__':
list=[('41492968379078','4730','S6S5IN3G','6','Android'),('53519716736397','4731','S6S5IN3G','6','Android'),('0123456789ABCDEF','4732','20','7','Android')]
with concurrent.futures.ProcessPoolExecutor() as executor:
multiprocesses = executor.map(Myfunction, list)
Конечно, я получаю ошибку:
concurrent.futures.process._RemoteTraceback: "" "Traceback (большинство последний вызов последнего): файл "C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ concurrent \ futures \ process.py", строка 239, в _process_worker r = call_item.fn (* call_item .args, ** call_item.kwargs) Файл "C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ conc urrent \ futures \ process.py ", строка 198, в _process_chunk возвращает [fn (* args) для аргументов в чанке] Файл" C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ concurrent \ futures \ process.py ", строка 198, взамен [fn (* args) для аргументов в чанке] TypeError: Myfunction () отсутствует 4 обязательных позиционных аргумента: 'p_systemPort', 'p_deviceName', 'p_version' и 'p_os '"" "
Вышеуказанное исключение было прямой причиной следующего исключения:
Traceback (последний вызов был последним): файл" E: / DropboxBACKUP14112018 / Cff / Python / project_GITHUB / test2 .py ", строка 24, для многопроцессных в многопроцессных: файл" C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ concurrent \ futures \ process.py ", строка 483, в _chain_from_iterable_of_lists для элемента в итерируемом: файл "C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ concurrent \ futures_base.py", строка 598, в result_iterator возвращает fs.pop (). result () Файл "C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ co ncurrent \ futures_base.py ", строка 435, в результате возвращает self .__ get_result () Файл" C: \ Users \ Nino \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ concurrent \ futures_base.py ", строка 384 , в __get_result поднять self._exception TypeError: Myfunction () отсутствует 4 обязательных позиционных аргумента: 'p_systemPort', 'p_deviceName', 'p_version' и 'p_os
Я пробовал разные вещи из всех ответов похоже на мою проблему, но у меня ничего не получилось.
Может кто-нибудь мне помочь, пожалуйста?