Эти две библиотеки разделяют аналогичную философию и аналогичные проектные решения в результате. Но этот популярный тест WSGI говорит, что eventlet работает медленнее, чем gevent. Что отличает их производительность?
Как я знаю, ключевые различия между ними:
-
geventпреднамеренно зависит от иlibev(libevent, ранее), аeventletопределяет независимый интерфейс реактора и реализует конкретные адаптеры с использованиемselect,epollи витой реактор за этим. Имеет ли дополнительный интерфейс реактора критические характеристики? -
geventв основном написан в Cython, аeventletнаписан на чистом Python. Изначально компилируется Cython так быстро, как чистый Python, для не очень-вычислительных, но IO-связанных программ? -
Примитивы
geventэмулируют интерфейсы стандартных библиотек, в то время как примитивыeventlets отличаются от стандартных и предоставляют дополнительный уровень для эмуляции. Повышает ли дополнительный уровень эмуляцииeventlet? -
Является ли реализация
eventlet.wsgiхуже, чемgevent.pywsgi?
Мне действительно интересно, потому что они в целом выглядят так похожими для меня.