Если вы уже используете несколько потоков, epoll
не дает вам дополнительных преимуществ.
Смысл epoll
заключается в том, что один поток может одновременно прослушивать действия на множестве селекторов файлов (и реагировать на события для каждого по мере их возникновения) и, таким образом, обеспечивать многозадачность, управляемую событиями, не требуя порождениядополнительные темы.Потоки являются относительно дешевыми (по сравнению с порождающими процессами), но каждый требует , требует некоторых накладных расходов (в конце концов, каждый из них должен поддерживать стек вызовов).
Если вы хотите, вы можете переписать процессы вашего пула, чтобы они были однопоточными, используя epoll
, что уменьшило бы общее количество используемых потоков, но, конечно, вам нужно было бы подумать, что вас это волнуетили нет - в общем, для небольшого числа одновременных запросов на каждого работника издержки порождения потоков не будут иметь значения, но если вы хотите, чтобы каждый работник мог обрабатывать 1000 открытых соединений, эти издержки могут стать значительными (ивот где epoll
сияет).
Но ...
То, что вы описываете, звучит подозрительно, как будто вы в основном заново изобретаете колесо - ваше:
- основной цикл и интерпретатор запросов
- пул процессов
звучит почти так же, как:
nginx
(илиny Другой балансировщик нагрузки / обратный прокси-сервер) - Предварительное разветвление
tornado
app
Tornado - это однопоточный модуль Python веб-сервера, использующий epoll
и имеет встроенную возможность предварительного разветвления (это означает, что он порождает несколько своих копий как отдельные процессы, эффективно создавая пул процессов).Tornado основан на технологии, созданной для поддержки Friendfeed - им нужен был способ обрабатывать огромное количество открытых соединений для клиентов с длительным опросом, которые ищут новые обновления в режиме реального времени.
Если вы делаете это в качестве обученияпроцесс, то непременно изобретать заново!Это отличный способ учиться.Но если вы на самом деле пытаетесь создать приложение на основе подобных вещей, я настоятельно рекомендую рассмотреть возможность использования существующих, стабильных, совместно разработанных проектов - это сэкономит вам много времени, фальстартов иПотенциальные ошибки.
(PS Я одобряю ваш аватар. <3) </em>