Python - использование многопроцессорной обработки / многопоточности для утилизации в Интернете
Я использую пакет Python из Википедии для очистки данных определенной темы.
q=['NASA', 'NASA_insignia', 'NASA_spinoff_technologies', 'NASA_facilities', 'NASA_Pathfinder', 'List_of_NASA_missions', 'Langley_Research_Center', 'NASA-TLX', 'Budget_of_NASA', 'NASA_(disambiguation)']
Пример выше, я искал НАСА. Теперь мне нужно получить сводку по каждому элементу в списке.
ny = []
for i in range(len(q)):
y = wikipedia.page(q[i])
x = y.summary
ny.append(x)
При выполнении всего этого процесса, то есть прохождения каждого элемента списка и извлечения сводки по каждому элементу, для завершения всего процесса требуется почти 40-60 секунд (даже при хорошем сетевом соединении)
Я не знаю много о многопроцессорности / многопоточности. Как я могу ускорить выполнение на значительное время? Любая помощь будет оценена.
1 ответ
Вы можете использовать пул обработки (см. Документацию).
Вот пример, основанный на вашем коде:
from multiprocessing import Pool
q = ['NASA', 'NASA_insignia', 'NASA_spinoff_technologies', 'NASA_facilities', 'NASA_Pathfinder',
'List_of_NASA_missions', 'Langley_Research_Center', 'NASA-TLX', 'Budget_of_NASA', 'NASA_(disambiguation)']
def f(q_i):
y = wikipedia.page(q_i)
return y.summary
with Pool(5) as p:
ny = p.map(f, q)
В принципе f
применяется для каждого элемента в q
в отдельных процессах. Вы можете определить количество процессов при определении пула (5 в моем примере).