Python и multiprocessing Pool зашел в тупик
Всем доброго времени суток зашел в тупик со скриптом. Подскажите как передать название файла который записывается в цикле в переменную ListUrl в функцию fun?
resultUrl = sorted(glob.glob("*.csv")) # Получаю список файлов csv
for ListUrl in resultUrl:
list = list_url(ListUrl) # Собираю список из url из файла csv
with Pool(10) as p: # Создаю пул
p.map(fun, list) # Отправляю url в функцию. В функции отправляю http запрос собираю данные и записываю в файл
Email(ListUrl) # Отправляю отчет на email
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Можно использовать, например, partial. Обратите внимание, что "прошиваемый" через partial параметр идёт вторым у функции, иначе работать не будет:
from multiprocessing import Pool
from functools import partial
def fun(lst, fname):
print(fname, lst)
...
fun_fname = partial(fun, fname=ListUrl)
with Pool(10) as p: # Создаю пул
p.map(fun_fname, list)
Кстати, list - это плохое название переменной, оно перекрывает встроенный питоновский объект list, не надо так делать.