Как отладить ошибку Python Multiprocessing pool.map() (IndexError: индекс строки вне диапазона) без трассировки стека? - python


1

Использование pool.map() из многопроцессорной библиотеки lib в python. Вы получите следующую ошибку:

IndexError: string index out of range

Возможно, это из переменной (списка), которая выходит за пределы диапазона? если да, то как я могу его отладить? Там нет объяснения того, где произошла ошибка.

Более подробное описание кода:

(РЕДАКТИРОВАТЬ)

def myFunction(list):
     # function contents
     for item in list:
          # do tasks
with closing(Pool(processes=2)) as pool:
     pool.map(myFunction, sublist)
     pool.map(myFunction2, sublist2)
  •  18
  •  1
  • 8 фев 2020 2020-02-08 08:05:57

1 ответ

1

Ответ лежит в моем непонимании метода pool.map(func, iterable).

Предыдущая функция myFunction() использовала цикл for для циклического перемещения по объекту списка. Я оставил это в функции после реализации pool.map(), поэтому все задачи, которые я тщательно подготовил, шли на другой уровень глубже из-за цикла for.

Решение было простым случаем удаления цикла for и настройки некоторого кода, чтобы выглядеть более как это:

def myFunction(list):
    # do tasks
    # for loop contents....

Намного проще, однако я не понял, как использовать метод .map() в первом месте. Спасибо @dano за то, что вы указали, на что нужно смотреть.