В настоящее время websockify / websocket.py выдает предупреждение, если "numpy" недоступен:
ВНИМАНИЕ: нет модуля numpy, протокол HyBi работает медленнее или отключен
Это несколько сбивает с толку. Во-первых, HyBi точно не «отключен». И действительно ли он медленнее? Я провел несколько тестов с noVNC, и даже при воспроизведении видео Youtube с высокой частотой кадров процесс использования websocket.py совсем не потребляет много ресурсов процессора; он вообще редко появляется в топ-листах. Так что мне интересно, проводились ли здесь какие-нибудь реальные измерения? Я немного погуглил и ничего не нашел (кроме проблем с numpy ...). ИМХО, если мы не сможем измерить, что numpy имеет существенное значение, я думаю, было бы лучше и более чистым, если бы требовались только стандартные функции Python.
Часть «медленнее или отключена» связана с тем, что есть 4 разных модуля python, которые являются необязательными и проверяются с использованием того же кода в верхней части websocket.py. Например, если модуль ssl не найден, TLS / wss отключен. Я просто внес изменение, которое сделает это более ясным.
Numpy определенно быстрее. Используя тест tests / latency.py + tests / latency.html, я получаю следующие результаты (с задержкой отправки 10 мс и просто работающей на localhost):
Размер пакета 2000 байт:
Размер пакета 20000 байт:
Размер пакета 100000 байт:
Кроме того, с размером пакета 100 КБ не только задержка в 6 раз выше без numpy, но и сервер начинает отставать, и клиенту приходится неоднократно отступать во время теста.
Обратите внимание, что numpy действительно влияет только на демаскировку данных клиент-> сервер, поэтому для таких приложений, как noVNC, это будет в основном неактуальным. Однако websockify предназначен не только для noVNC, поэтому в случае, когда клиент отправляет много данных на сервер, numpy обеспечивает значительное улучшение производительности.
Спасибо!
Самый полезный комментарий
Часть «медленнее или отключена» связана с тем, что есть 4 разных модуля python, которые являются необязательными и проверяются с использованием того же кода в верхней части websocket.py. Например, если модуль ssl не найден, TLS / wss отключен. Я просто внес изменение, которое сделает это более ясным.
Numpy определенно быстрее. Используя тест tests / latency.py + tests / latency.html, я получаю следующие результаты (с задержкой отправки 10 мс и просто работающей на localhost):
Размер пакета 2000 байт:
Размер пакета 20000 байт:
Размер пакета 100000 байт:
Кроме того, с размером пакета 100 КБ не только задержка в 6 раз выше без numpy, но и сервер начинает отставать, и клиенту приходится неоднократно отступать во время теста.
Обратите внимание, что numpy действительно влияет только на демаскировку данных клиент-> сервер, поэтому для таких приложений, как noVNC, это будет в основном неактуальным. Однако websockify предназначен не только для noVNC, поэтому в случае, когда клиент отправляет много данных на сервер, numpy обеспечивает значительное улучшение производительности.