Каковы мои варианты для выполнения многопоточного / параллельного программирования в Python? - PullRequest
2 голосов
/ 12 февраля 2010

Я пишу простой сайт-паук, и я решил воспользоваться этой возможностью, чтобы узнать что-то новое в параллельном программировании на Python. Вместо того, чтобы использовать потоки и очередь, я решил попробовать что-то еще, но я не знаю, что мне подойдет.

Я слышал о Stackless, Celery, Twisted, Tornado и других вещах. Я не хочу настраивать базу данных и все другие зависимости от Celery, но я бы хотел, если это хорошо подходит для моих целей.

Мой вопрос: каков хороший баланс между пригодностью моего приложения и полезностью в целом? Я взглянул на тасклеты в Stackless, но я не уверен, что вызов urlopen () не будет блокироваться или что они будут выполняться параллельно, я не видел нигде упомянутого.

Может кто-нибудь дать мне несколько подробностей о моих возможностях и что лучше всего использовать?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 12 февраля 2010

Tornado - это веб-сервер, поэтому он не сильно поможет в написании паука. Twisted является гораздо более общим (и неизбежно сложным), подходящим для всех видов сетевых задач (и с хорошей интеграцией с циклом событий нескольких каркасов GUI). В самом деле, раньше был twisted.web.spider (но он был удален несколько лет назад, поскольку он не обслуживался - так что вам придется кататься самостоятельно поверх тех средств, которые предоставляет Twisted).

2 голосов
/ 12 февраля 2010

Я должен сказать, что Twisted получает мой голос.

Выполнение задач управления событиями довольно просто в Twisted. Интеграция с другими важными компонентами системы, такими как GTK + и DBus, очень проста.

Поддержка клиента HTTP пока что является базовой, но улучшается (> 9.0.0): см. Связанный вопрос .

Дополнительным бонусом является то, что Twisted доступен в репозитории Ubuntu по умолчанию; -)

1 голос
/ 12 февраля 2010

Для быстрого просмотра размеров упаковки см. ohloh.net / p / сравнить .
Конечно, размер источника - только приблизительная метрика (что мне действительно нужно, так это nr pages doc, nr pages examples, зависимости), но это может помочь.

...