Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 26, 2015 13:53:45

tiler
Зарегистрирован: 2015-01-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python + pygame + twisted(asyncore) на Rspberry Pi

Помогите, пожалуйста, разобраться. Для визуализации неких поступающих и запрашиваемых данных нужна связка, указанная в заголовке темы. Возникла необходимость визуализировать некие получаемые разными путями данные с помощью python (показался вполне подходящим для быстрой разработки приложения). Проблем с визуализацией не возникло – pygame отлично помог – понятных примеров по нему навалом. Однако я застрял на этапе реализации механизма получения данных. В приложении должен быть UDP сервер, принимающий данные от клиентов и TCP клиент, непрерывно делающий запросы заданному числу cерверов (то, что и сервер и клиент должны быть неблокирующими, я думаю, очевидно). Сервер получает данные время от времени по определенному протоколу, расковыривает их и что-то передает объекту, рисующему веселые картинки в pygame. Клиент же должен цепляться к набору серверов по telnet и непрерывно запрашивать с них данные – первый раз авторизовался, дал команду (команды могу варьироваться) – получил ответ, запросил заново – получил ответ и так далее – данные постоянно обновляются. Полученные данные отправляются на «расшифровку» и визуализируются.
У объекта, которые рисует, есть loop метод, обновляющий и рисующий все необходимое. Как это все связать с реактором, что бы обеспечить одновременную работу – я в упор не понимаю..

Отредактировано tiler (Янв. 26, 2015 14:01:06)

Офлайн

#2 Янв. 26, 2015 15:22:50

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

python + pygame + twisted(asyncore) на Rspberry Pi

Первое что приходит в голову, вообще не использовать twisted в объекте который у вас рисует картинку. Если надо что-то передать этому объекту, то сохранять эти данные в каком нибудь key-value хранилише (например redis & pub-sub).
Получили данные на сервере -> обработали -> сделали publish в канал редиса. Объект слушает этот канал и, при поустплении данных, рисует нужную вам картинку.

Офлайн

#3 Янв. 26, 2015 16:29:31

tiler
Зарегистрирован: 2015-01-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python + pygame + twisted(asyncore) на Rspberry Pi

Т.е. twisted будет жить в отдельном потоке, pygame - в отдельном? Уже крупицы полезной информации. Как передавать полученные данные потом подумаем. Мне бы реактор запустить с нужными прибамбасами.. В этом одна из главных проблем. ))) Не очень хотелось бы для решения утилитарной задачи становиться спецом по twisted. Как запихнуть в реактор клиент и сервер, дергая при этом без перерва клиента. Мозгодробительные callback'и и referrer'ы пугают..

Отредактировано tiler (Янв. 26, 2015 16:30:03)

Офлайн

#4 Янв. 27, 2015 05:53:10

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

python + pygame + twisted(asyncore) на Rspberry Pi

Вам нужен twisted.internet.task.LoopingCall - ваша функция отрисовки регистрируется в реакторе и он дергает ее с заданной периодичностью. Вот тут подробно



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version