Мне нужно сделать «сервер», который может обрабатывать несколько длительных соединений потоковых данных - PullRequest
1 голос
/ 12 февраля 2012

Мне нужно читать и выводить данные в режиме реального времени с нескольких телефонов Android одновременно.Я пытаюсь создать сервер (на python), к которому каждый телефон может подключаться одновременно, который будет получать потоки данных с каждого телефона и строить графики в режиме реального времени, используя matplotlib.Я не очень опытен в программировании сокетов, хотя я знаю основы (серверы с одним запросом и тому подобное).Как мне это сделать?Я посмотрел на Asyncore, SocketServer и другие модули, но я не уверен, что понимаю, как разрешить несколько длительных подключений.

Я думал, что мне следует создать новый поток для каждого телефона (хотя яя не уверен, безопасно ли передавать сокет в новый поток), но я также хочу иметь возможность строить графики с использованием вспомогательных участков (например, 4 участка рядом), хотя это не так важно.

Iпросто нужна точка в правильном направлении.Небольшие примеры кода оценены для иллюстрации концепции.

1 Ответ

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

Использование потоков из-за реализации многопоточности в Python может привести к снижению производительности в зависимости от того, что делают ваши потоки.

Я бы предложил использовать каркас для построения асинхронного сервера.Один из таких фреймворков - Gevent .Используя асинхронный цикл обработки событий, вы можете выполнять вычисления, пока другие «потоки» (в случае gevent, greenlets) ожидают ввода-вывода и, таким образом, получают более высокую производительность.Модель также идеально подходит для длительных бездействующих соединений.

...