Сетевая многопоточность в python

Я пишу скрипт на Python, который будет очищать некоторые страницы с моего веб-сервера и помещать их в файл. Я использую модуль mechanize.Browser() для этой конкретной задачи.

Однако я обнаружил, что создание одного единственного экземпляра mechanize.Browser() происходит довольно медленно. Есть ли способ, которым я мог бы относительно безболезненно использовать многопоточность/многопроцессорность (т.е. выдавать сразу несколько запросов GET)?


person Bo Milanovich    schedule 20.10.2011    source источник
comment
Вы смотрели модуль Python threading?   -  person ObscureRobot    schedule 20.10.2011
comment
Разве модуль threading не предназначен только для запуска нового потока процессора?   -  person Bo Milanovich    schedule 20.10.2011
comment
comment
хорошо, если вы не хотите использовать многопоточность, как предложил @ObscureRobot, вы можете попробовать многопроцессорность.   -  person imm    schedule 20.10.2011
comment
ObscureRobot и imm: мне не нужны потоки процессора. Как говорится в моем сообщении, я хочу [выполнить] несколько запросов GET одновременно - как в HTTP-запросе GET. @phaedrus - спасибо, это интересное чтение. Кажется, это не очень просто реализовать, похоже, мне придется переписать все приложение (более 3000 строк кода)   -  person Bo Milanovich    schedule 20.10.2011
comment
@deusdies, мы не знаем, как вам помочь, если вы не дадите нам достаточно контекста, чтобы выделить, что такого сложного в использовании многопроцессорности с вашим кодом. Пример кода, иллюстрирующий проблему, сделает этот вопрос ответным   -  person This    schedule 20.10.2011
comment
пробовали ли вы скрапировать   -  person jfs    schedule 23.10.2011


Ответы (2)


Используйте gevent или eventlet, чтобы получить одновременный сетевой ввод-вывод.

person cerberos    schedule 23.10.2011

Если вам нужен промышленный веб-скраппинг Python, проверьте scrapy. Он использует Twisted для асинхронной связи и невероятно быстр. Возможность просматривать 50 страниц в секунду не является нереалистичным ожиданием.

person synthesizerpatel    schedule 26.10.2011