2012-06-05 10 views
27

He buscado respuestas y parece que parece viejo o desactualizado. ¿Python 3 se ha actualizado aún, por lo que es decentemente más rápido que Python 2.7 o aún así me conviene seguir con mi código viable?Python 2.7 o Python 3 (por velocidad)?

+0

La compatibilidad con Unicode para ciertos casos de uso es mejor en Python 3. – nhahtdh

+0

Python 3 tiene algunas nuevas optimizaciones en parte del lenguaje, pero Python2 tiene la ['pypy' JIT VM] (http://www.pypy.org) que puede obtener importantes mejoras de velocidad. ¿Cuál es tu pregunta? Si ya tiene el código compatible con Python 2, puede quedarse con Python 2 o cambiar a Python 3 con algunos cambios de código (a menos que haya libs que no pueda obtener en Python 3). – birryree

+0

@birryree Mi pregunta es si podría esperar mejoras en la velocidad transfiriendo a Python 3. No pude ponerme nervioso trabajando en Windows. – MyNameIsKhan

Respuesta

30

El problema no es sobre la velocidad: tienen la misma velocidad o Python 3.x es más rápido (según los puntos de referencia que mire). Más específicamente, Python 2 solía ser más rápido, pero aparentemente están a la par el uno del otro ahora (?). Vea los comentarios y este slide deck (hacia la parte posterior).

Los desarrolladores centrales también están trabajando activamente en la optimización de Python 3: cada nueva versión de Python 3 ha sido faster then the last. Puede mantenerse al tanto de las últimas propuestas e ideas sobre la optimización de Python (así como las numerosas complicaciones) al monitorear el python-dev mailing list.

Más bien, la razón por la que muchas personas solían dar por no actualizar es porque cuando salió Python 3, y durante varios años después, la mayoría de las bibliotecas de Python no se actualizaron para funcionar en Python 3.x. Sin embargo, afortunadamente, esta situación ha mejorado enormemente en la actualidad: la mayoría de las bibliotecas de terceros ahora son compatibles con Python 3.

El Python FAQ contiene más información. También puede comprobar el Python Wall of Superpowers o Py3 Readiness para obtener una visión general de que las bibliotecas de Python populares son actualmente compatibles con Python 3.

Actualización: (verano 2017)

me siento un poco obligado a señalar que el apoyo a Python 2 es formally ending in 2020.

Muchas bibliotecas 3 ª parte también están planeando en seguir su ejemplo - un gran subconjunto del ecosistema científica (por ejemplo matplotlib, pandas, ipython) están planeando dropping support for Python 2 in 2020, Django es dropping support ... No me sorprendería que otra las bibliotecas hacen lo mismo.

Por lo tanto, si está interesado en asegurarse de que puede usar las últimas y mejores características en Python o en su biblioteca favorita, debería considerar migrar a Python 3 más pronto que tarde.

Estas son algunas guías sobre la conversión de Python 2 a 3 código:

+0

Esto también es precisamente (la otra razón) por la que aún no lo he actualizado. Parece que el soporte es limitado para muchas de las bibliotecas que uso. – MyNameIsKhan

+16

En realidad, Python 3 tiende a ser un poco más lento que 2.x. No mucho y puedes tratarlos de la misma manera con fines prácticos, pero el hecho de que cada número entero ahora sea 'largo' y cada cadena ahora 'unicode' tenga algo de sobrecarga. – kindall

+0

Hay otras mejoras importantes de velocidad, en particular en el subprocesamiento y GIL, por lo que si va a usarlo para algo que involucra subprocesos (la mayoría de los servidores web) o algunos cálculos intensivos probablemente> = 3.2 será más rápido en general. – Feras

9

Python 3.3 se incluye una optimización de las cadenas Unicode que reduce su consumo de memoria . Eso podría traducir en un código más rápido si más de eso cabe en el caché.

Realmente la única manera de saberlo es comparar su código más crítico en ambos y ver cuál es la diferencia.

+1

Acepto: la evaluación comparativa es el camino a seguir. – Michael0x2a

5

La necesidad de bibliotecas para sus aplicaciones determinará si Python3 o Pyhton2 es mejor.

+0

Preguntó acerca de la velocidad, no cuál es mejor. Pidió información, no un juicio o preferencia. – Xennex81

13

FYI, here es un benchmark de rendimiento que compara Python 2.7 con Python 3.3. Python 3.3 es más rápido que Python 2.7.

+0

@JimFerrans bien, está actualizado ahora –