Задать вопрос

Как запустить python html парсер в несколько потоков?

Есть данные ( >1кк строк), по каждой строке идет запрос urllib.request.urlopen(). Я разбил базу на 30 частей. Теперь надо одновременно запустить 30 одинаковых скриптов для каждой части. Как это реализовать?
Пробовал в терминале запускать 2 скрипта сразу, через "python_script_1&python_script_2", все работает отлично, но как быть если 30 скриптов? Тут самое проблемное, это организация директорий (я конечно прописал в каждом скрипте os.path.abspath(os.curdir)).
Прошу помочь практическими советами, читать про многопоточность нет времени.
  • Вопрос задан
  • 3018 просмотров
Подписаться 15 Оценить Комментировать
Решения вопроса 1
@asd111
Самая простая многопоточность:
import urllib2 
from multiprocessing.dummy import Pool as ThreadPool 

urls = [
  'http://www.python.org', 
  'http://www.python.org/about/',
  'http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html',
  'http://www.python.org/doc/'  
  ]

# Make the Pool of workers
pool = ThreadPool(4) 

# Open the urls in their own threads
# and return the results
results = pool.map(urllib2.urlopen, urls)

#close the pool and wait for the work to finish 
pool.close() 
pool.join()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
освой MultiCurl , там довольно легко перестроить имена сохранямых файлов

скачиваешь, потом по директории прходишь и разбираешь, можно без всяких мультипроцессоров даже, основная трата времени - получение с удаленного сервера
Ответ написан
Комментировать
sim3x
@sim3x
cat list | parallel -j 30 ./script.py {}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы