Python Asyncore с очень низким временем ожидания - PullRequest
1 голос
/ 24 сентября 2010

Я написал программу, которая взаимодействует со многими серверами одновременно, используя модуль asyncore. По большей части я просто отвечаю на данные, полученные с серверов, но иногда мне нужно отправлять некоторые данные «несинхронно». При тайм-ауте по умолчанию в 30 секунд очевидна задержка перед отправкой пакета, поэтому я уменьшил тайм-аут до 0,1 для большей отзывчивости.

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

1 Ответ

1 голос
/ 04 октября 2010

Чтобы ответить на мой вопрос:

Для этого типа приложения опроса необходимо иметь небольшое значение тайм-аута. Время ожидания указывает, как долго внутренние функциональные блоки выбора ожидают, пока сокет не станет активным. Если вы часто отправляете данные, вам нужно установить для тайм-аута небольшое значение, чтобы выбрать опцию вашего сокета для записи данных с приемлемым интервалом. В противном случае команда select будет блокироваться слишком долго перед проверкой и может вызвать такие задержки.

В итоге я использовал тайм-аут 0,05 секунды.

...