python performance gevent pypy

python - ¿Qué configuración es más eficiente? ¿Frasco con pypy, o Frasco con gevent?



gevent sleep (3)

El servidor de matraz incorporado es un servidor BaseHTTPS o algo así, nunca se usa. El mejor escenario es muy probable que sea tornado + pypy o algo así. Benchmark antes de usar sin embargo. También depende bastante drásticamente de lo que estás haciendo. Los puntos de referencia del marco web + marco de trabajo web suelen ser tipos de referencia hola mundo. ¿Es tu aplicación realmente así?

Saludos, fijal

Se supone que tanto ''pypy'' como ''gevent'' proporcionan un alto rendimiento. Pypy es supuestamente más rápido que CPython, mientras que gevent se basa en co-rutinas y greenlets, lo que supuestamente hace que el servidor web sea más rápido.

Sin embargo, no son compatibles entre sí.

Me pregunto qué configuración es más eficiente (en términos de velocidad / rendimiento):

  • El servidor Flask incorporado que se ejecuta en pypy

o:

  • El servidor gevent, ejecutándose en CPython

La respuesta corta es: es más rápido con PyPy y tiene una mayor concurrencia con gevent.

Es posible usar gevent y PyPy simultáneamente (lo hacemos en PubNub para múltiples proyectos) aunque puede ser complicado. A partir de PyPy 2.2, se requieren algunos parches para gevent en su implementación de socket. Tenemos una rama experimental en github para ello: https://github.com/pubnub/gevent/tree/pypy-hacks - Para ser usado en conjunto con pypycore .

¿Nuestra recomendación? Usa Frasco con PyPy y gevent. ¡Consigue lo mejor de ambos mundos!


Pypy es compatible con Gevent +1.1 ( http://www.gevent.org/changelog.html ). También es compatible con Python 3. Entonces, ¿por qué no usar ambos? Pypy mejorará el rendimiento del procesamiento, mientras que Gevent ayudará en las tareas vinculadas a IO (por ejemplo, consultas de bases de datos, solicitudes web) mediante el uso de conexiones asíncronas subterráneas.