В предыдущем посте я обещал привести пример приложения, работающего на базе простого сервера приложений. Для тех, кто знаком с разработкой многопотоковых приложений наверняка знакомы с Queue из стандартной библиотеки python. Данный класс очень полезен для безопасного обмена информацией между нескольким потоками. Взяв за основу идею стандартного Queue я постарался несколько расширить ее и добавить возможность обмена информацией между потоками выполняющимися на разных компьютерах/хостах.
суббота, 29 мая 2010 г.
пятница, 28 мая 2010 г.
Простой сервер приложений
В Интернете можно найти невероятное количество фреймворков и заготовок для сервера приложений. Но все они либо сложны и велики по размерам, либо требуют дополнительных сторонних библиотек, либо работают в только под unix-подобными операционными системами. Да и разработаны они по большей части для web приложений. Пару дней назад мне понадобился простой сервер приложений для реализации небольшого сетевого сервиса. Потратив несколько часов в относительно безрезультатных поисках, принял решение написать простой сервер приложений самостоятельно.
Теги:
application,
http,
python,
server
пятница, 14 мая 2010 г.
Заметки о параллельных вычислениях
Экспериментируя с многопотоковыми приложениями решил по ходу делать заметки, о чем нужно помнить, что принимать во внимание.
- процессы стартуют не мгновенно, необходимо время для загрузки в память и начала выполнения
- память используемая несколькими потоками/процессами должна быть ассоциирована с системой синхронизации
- так как процессы/потоки существуют параллельно, кроме общих переменных необходимо так же учитывать синхронизацию по времени выполнения
- для упрощения работы с процессами желательно не допускать выполнения процесса бесконечно долго. Желательно использование таймеров.
- если все-таки процесс должен выполняться достаточно долго, необходимо учесть возможность в любой момент опроса состояния процесса
- иногда полезно рассматривать процесс как черный ящик
- на вход процесса подают задачи (tasks), на выходе получают результаты (results)
- при отладке служебная информация, логи, отладочная информация должна быть доступна по запросу либо постоянно писаться в лог
- желательно, чтобы логика процесса могла выполнять не только как процесс, но и как функция. Упрощается отладка
- многопоточность = непредсказуемость
среда, 12 мая 2010 г.
Использование Pool для модуля threading (python)
В стандартном модуле multiprocessing есть достаточно удобная возможность использования Pool (набора процессов). Задачи назначенные пулу будут выполняться параллельно. Количество процессов может быть выбрано произвольное, но часто встречается формула: число процессов равно числу ядер процессора умноженное на 2. Основная идея состоит в том, чтобы распределить выполнение задач между конечным числом процессов (число задач больше, чем число процессов).
вторник, 4 мая 2010 г.
Как извлечь RSS/Atom ссылку из HTML документа
Что такое RSS говорить не нужно. Об этом написано немало, ссылки на RSS можно встретить практически на каждом сайте, узнать по иконке.
А если вкратце, то RSS предоставляет удобную возможность получения новостей, новых статей, изменений публикуемых на сайтах, блогах, подкастах. Для того, чтобы их получать достаточно скопировать ссылку на RSS канал в свой RSS агрегатор. После этого, вся новая информация с интернет ресурсов, будет автоматически доступна в одном месте. Больше нет необходимости каждый раз заходить на сайты, чтобы проверить, что же нового появилось. Вся информация становится доступной из одного места, из вашего приложения для чтения новостей. Это может быть отдельное приложение специально предназначенное для чтения RSS лент, либо ваш почтовый клиент (Thunderbird, Evolution, MS Outlook и др.) либо веб-приложение (как пример Google Reader).
А если вкратце, то RSS предоставляет удобную возможность получения новостей, новых статей, изменений публикуемых на сайтах, блогах, подкастах. Для того, чтобы их получать достаточно скопировать ссылку на RSS канал в свой RSS агрегатор. После этого, вся новая информация с интернет ресурсов, будет автоматически доступна в одном месте. Больше нет необходимости каждый раз заходить на сайты, чтобы проверить, что же нового появилось. Вся информация становится доступной из одного места, из вашего приложения для чтения новостей. Это может быть отдельное приложение специально предназначенное для чтения RSS лент, либо ваш почтовый клиент (Thunderbird, Evolution, MS Outlook и др.) либо веб-приложение (как пример Google Reader).
Подписаться на:
Сообщения (Atom)


