Hace 1 año | Por Socavador a genbeta.com
Publicado hace 1 año por Socavador a genbeta.com

Hace unos días, la cuenta oficial en Twitter de PyPI (Python Package Index), el repositorio de software vinculado al lenguaje Python, publicaba la siguiente imagen, mostrando el nivel de consumo de CPU resultante de la ejecución de Gunicorn (un servidor web basado en Python), justo antes y después de ser actualizado a la nueva versión de Python, la 3.11.

Comentarios

sillycon

#3 dice también que es un 25% más rápido.
En cualquier caso Python es un lenguaje interpretado a través de un lenguaje intermedio, al estilo de los bytecodes de Java. Cualquier lenguaje compilado medianamente correcto será mucho más eficaz.

D

#18 si eso fuese cierto, no existiría PHP, y todas las empresas programarían todas sus webs directamente en C.

D

#8 java es muchísimo más potente que Python

a

#18 que el desarrollo supone un pequeño porcentaje...? O no eres programador o tu experiencia en el mundo laboral es nulo.

Los proyectos nunca se acaban. Siempre hay errores o nuevas funcionalidades que aparecen.

Y sí, generalmente es más barato echar más hardware al problema que pagar más programadores. Que igualmente no es cierto porque la diferencia real de programar una aplicación web en Python o en C++ es nula.

pawer13

#8 Java sigue siendo más eficiente que Python. Gasta más RAM, pero menos CPU

SaulBadman

#18 Ya, pero la realidad es que la mayoría de servidores corren código en JavaScript, Python, PHP, Java, y demás lenguajes que no son demasiado conocidos por son demasiados conocidos por si eficiencia.

Según tengo entendido, para encontrar C, C++, Rust, y similares en el backend de un servidor tiene que ser algo que maneje flujos de datos enormes, como puedan ser los servidores de YouTube, Netflix y demás

ppma

#25 #65 #68
Bibliotecas

l

#13 CPCO4 - Python. Más rápido que C (49:06)



#19 #20 Hay un CMS hecho en C con la motivacion de ahorrar gasto energetico. Estari bien una version o CMS en Rust.
#95 CMS hecho en C++ . Pero no conozco mas en lenguaje de bajo nivel.
http://cppcms.com/wikipp/en/page/rationale

A muchas empresas les compensa ahorrar horas de programacion a costa del hardware, comprar mas y tenerl mas tiempo en uso.
#38 #35 pues hay una charlas de analisis forense que dice que le saca mucho mas rendimiento con Rust que con python. Supongo que son cosas no estandar que hay que diseñar procesos no-standar de bajo nivel.
https://invidious.privacydev.net/watch?v=hhRM-D5xn60

D

#45 A mi no me parece mal lo que dice. Muchas veces por meter prisa a los desarrolladores se cometen errores que luego tiran para atrás una versión. A veces es absurdo tanta prisa y sale más caro.

D

#5 Estoy mirando el what's new in Python 3.11 y no veo que haya grandes cambios que joroben la compatibilidad. Nada diferente a lo que encuentras entre versiones que distan 3 o 4 releases. Y puedes tener 3.8 y 3.11 instalados a la vez (aún tengo python 2...).

pawer13

#7 EEE?

Aokromes

#5 python3 --version
Python 3.9.2
debian stable.

RamonMercader

#18 bienvenido a 2022. Ningún software comercial va a estar 10 años en la nube sin cambios.

La industria está transformándose hacia modelos de CI/CD para poder competir (eso en España, en otros sitios y en algunos sectores ya están 100% en ese modelo). El desarrollo es el mayor coste de cualquier producto de software, y con cosas como esta que reducen y optimizan el resto de costes, cada vez será un % mayor.

Y aun diría más, en cuanto las IAs que programen estén más afinadas y sirvan para un uso industrial, en lugar de reducir el número de programadores hará que se pase al siguiente nivel, donde desarrollos de años se hagan en meses y la demanda de software cada más complejo se dispare. Eso acabará haciendo que se necesiten incluso más programadores, ya que con una IA una pequeña empresa va a poder plantearse tener lonque ahora solo tienen las grandes empresas (y estas pasarán al siguiente escalón)

llorencs

#99 No, tampoco.

Ejemplo:
n = 4
print(f'El número es: ')

O puedes hacer algo así:
n2=2
print(f'La suma es: ')

D

#19 Un servidor web, como el del meneo, está funcionando las 24 horas.

llorencs

#5 #21 Cualquier cosa escrita en Python 3 funciona en las versiones posteriores. Por lo tanto no hay nada de compatibilidad rota, como bien dices. Pero eso sí, hay cosas nuevas en las revisiones que sí que pueden hacer que no funcionen si se ejecutan en Python anteriores. El caso más relevante en Python 3.10 sería el "match", que no existe en versiones anteriores.

p

#4 ¿Y consume más o menos que Bitcooin?

RubiaDereBote

#18 " El desarrollo solo es un pequeño % en el tiempo de vida de un programa."

Debo confesar que se me has sacado una carcajada. El desarrollo de cualquier software es como un cáncer que se extiende durante toda su vida.

#13 ahora bien, así como le digo eso al compañero eso, a ti te digo que en Python hay cosas que se pueden programar muy rápidamente pero también es verdad que por la idiosincrasia del ecosistema Python, donde no se usa el tipado correspondiente ni de casualidad, hace que cualquier error sea una odisea encontrarlo y corregirlo. Eso hace que el tiempo que ahorras por un lado, lo pierdas por el otro con creces. Para mí, los únicos lenguajes que deberían usarse para aplicaciones que van a estar en producción, son aquellos que poseen un fuerte y estático tipado, y que además es obligatorio su uso. Eso es lo que más tiempo ahorra a un programador.
Python está muy bien para prototipado.

M

#5 Ubuntu 22.10 viene con Python 3.10

a

#119 ah claro, hay casuisticas y casuisticas. En tu caso de uso si que haría la parte intensiva de CPU en C++. Pero solo eso, la parte que sea intensiva en CPU.

Yo hablaba de la típica aplicación CRUD, que es el caso de uso más frecuente para los programadores. Ahí el cuello de botella es la base de datos, la aplicación normalmente consume muyyy poquita cpu en comparación con la base de datos y por tanto es absurdo pasarlo a C++

Cuñado

#95 Y ni siquiera. Tanto el backend de YouTube como el de Netflix están programados en Python. Lo cual no implica que por supuesto tengan rutinas muy específicas programadas en otros lenguajes para llevar a cabo tareas CPU-intensivas como puede ser la codificación de vídeo. Tareas que, por cierto, son llamadas desde los gestores de tareas... desarrollados en Python.

La excepción a lo que comentas es Rust. Rust sí está teniendo mucha tracción últimamente en el desarrollo web y ya dispone de un ecosistema bastante nutrido en ese campo. Aunque por supuesto a años luz de los de JS, Python o Java.

M

#5 Y acabo de comprobar que en Ubuntu 22.10 también está ya disponible la versión 3.11

Cuñado

#93 para un mismo uso

Eso es precisamente en lo que no son comparables. Probablemente, entre los lenguajes más usados, no haya dos con más casos de uso y menos solapamiento entre ellos que Python y C.

AlvaroLab

#137 hay gente que tiene que tener la razón siempre. No debería responder a tantos mensajes... 😂

D

Sería interesante saber qué cambios han hecho, a nivel de compilador y otros, para lograr eso.

F

#20 Pero todo depende del uso que se le dé. Te aseguro que mis páginas web escritas en cualquier lenguaje interpretado funcionan perfectamente en mi Raspberry.

AlvaroLab

#82 Bajo mi punto de vista son difícilmente comparables, tanto en tipo de lenguaje como en sus aplicaciones.

AlvaroLab

#93 Es como comparar, un delantero y un portero. Claro que se pueden comparar... pero... bueno, eso.
Puedes comparar el número de penalties que un portero y un delantero paran, sí. Puedes comparar el número de goles que marcan, sí.

Puedes hacer desarrollo backend web con C, sí. Sería una locura, sí.
Puedes hacer programación de bajo nivel con Python, sí. Sería una locura, sí.

Python es mucho más accesible que C y eso lo hace más lento que C. El cometido de los 2 es muy distinto.

Luego ya... compilado vs interpretado, tipado dinámico vs estático...

llorencs

#105 Yo lo uso como si fuera tipado (tienes los "hints"):

def suma(a: int, b: int) -> int: return a+b

Para rel redondeo tampoco necesitarías usar la sintaxis del % (Que por cierto existe en todos los lenguajes, C también lo usa).

Para el redondeo podrías hacer algo así:
f'Variable: '
O usar:
'Variable: '.format(round(variable))

AlvaroLab

#116 Para ti la perra gorda.

También se puede comparar un Opel Corsa del 93 con el mito de la caverna de Platón.
Comparables son, equivalentes, en ninguna situación.

D

#6 Gracias!

N

#28 Embrace, Extend, Extinguish

a

#39 no es ser borde, es ser directo.

A mí lo que me sorprende esque #_18 tenga tantos votos positivos teniendo en cuenta que no tiene ni idea de desarrollo software.

a

#27 todavía hay aplicaciones que usen Python 2?

AlvaroLab

#11

De el siguiente artículo - https://zathiro.wordpress.com/2010/08/21/python-lenguaje-semi-interpretado/
"Python tiene, no obstante, muchas de las características de los lenguajes compilados, por lo que se podría decir que es semi interpretado. En Python, como en Java y muchos otros lenguajes, el código fuente se traduce a un pseudo código máquina intermedio llamado bytecode la primera vez que se ejecuta, generando archivos .pyc o .pyo (bytecode optimizado), que son los que se ejecutarán en sucesivas ocasiones."

Supongo que se refiere a eso. No es una compilación al estilo C, pero sí hay un compilador.

AlvaroLab

#75 creo que puedes compilar Python si quieres, para optimizar la "compilación" más (yo nunca lo he hecho).

Pero en general, la "compilación" de Python sucede de forma automática, que no quiere decir que no haya un compilador.

B

Esto indica que antes el rendimiento era vergonzoso.

Cosa que por otro lado todos ya sabíamos.

F

#50 Depende del tipo de aplicación pero, por lo general, en las aplicaciones web con las típicas acciones CRUD el cuello de botella está en las BBDD siempre. Gestionar una petición HTTP y que el controlador devuelva una respuesta es una acción casi instantánea, ya se trate de Python, PHP, Java o C. Repito, para aplicaciones con poca concurrencia.

h

#24 24 horas al día a 1 request por minuto es nada. No ahorras nada aunque lo hagas 100 veces más rápido.

w

#19 Que va, sin suponer uso intensivo. Como si se ejecuta una vez al día. El tiempo coste de cpu en 10 años no merece la pena.

Además, que estás suponiendo que el coste de cpu va a ser bajo forever

e

#49 deepeendee

b

#58 va a dias , pa que nos vamos a engañar

O

He programado profesionalmente en más de 7 lenguajes, y puedo decir sin ningún género de dudas que Phyton es la mayor mierda que he visto y, para colmo, el que más éxito tiene (entre los que solo conocen ese lenguaje o no les gusta programar). Cuando lo empecé a estudiar, confieso que con cierta ilusión, no salía de mi asombro al constatar que este lenguaje había heredado lo peor de PHP, junto a lo peor de las tabulaciones, sintaxis horrorosa, con $ y _ por todos lados y encima dirás, ya que es feo, tendrá un rendimiento de cojones, pues tampoco. Es un lenguaje fallido para grandes proyectos pero supongo que para tirar cuatro líneas para automatizar algún proceso de sistemas valdrá. O también es usado por cojones, porque alguien tuvo la genial idea de desarrollar buenas librerías de IA en su día.

w

#89 correcto, el código requiere un mantenimiento que hay que pagarlo.

Yo hablo de costes. Y el precio del mantenimiento es mucho menor que el de desarrollo.

Y el precio de la cpu en entornos virtuales es algo que ningún desarrollador ve ni tiene en cuenta pero que pagar, se paga.

CC #84 #62 #59

#42 10 años llevo programando profesionalmente y otros tantos como estudiante y si, también en python.

#33 ya está el típico que se piensa que todas las empresas funcionan como la suya. Y luego le pones un test de codility o hackerrank en la entrevista y todo son excusas, que en su pueblo se hacia esto o lo otro.

w

#115 Pues me das bastante envidia, la verdad. Yo trabajo en un cliente que, típicamente, compra el software que tu produces.

El software se customiza, pero la base ya está hecha. Mi proyecto son solo 500k líneas, pero he visto otros clientes con millones de líneas "adicionales". En cuanto a la cpu, tenemos un grid que por las noches arde haciendo cálculos y simulaciones para los usuarios al día siguiente. Además bajo una ley de seguridad nacional que ya me gustarìa tener en España. No, no vale cualquier cpu roll

Te puedes imaginar que en un entorno así la distribución de los costes no es la misma. De ahí mi comentario.

w

#124 jovenzuelos, mira lo que dicen y si supieran dónde está su dinero.... te suena cobol de algo?

w

#139 Encantado!

Jakeukalane

Manjaro hace poco iba por la 3.8 o la 3.9; no me imagino la cantidad de cosas que romperán al actualizar esta vez...

editado:
Parece que ya van por la 3.10 pero dudo que esa sea la situación con Ubuntu y Debian que son los sistemas usados en Google Colabs.

Jakeukalane

#5 Edit2. ¿EEE de Microsoft contra Python a la vista? Ya lo están haciendo con Linux.

D

#8 Como apunta #17 , los lenguajes compilados son muchísimo más rápidos y consumen bastante menos recursos que los no compilados.

D

#25 (Y antes de que me digáis "pues python se usa para inteligencia artificial", responderé que sí, pero el "backend" de todas esas librerías es C/C++).

Por curiosidad, ¿puedes explicar esto? Gracias

abnog

#14 #17 #34

Punto uno: no me jodáis la coña
Y punto dos: Java usa una máquina virtual al igual que Python, no es compilado.

D

#38 #36 Gracias.

D

#94 "Python reciente" del año 91, hombre joven no es.
Y en esto que dices, pues cuestión de gustos

l

#111 #114 en Cython se puede declarar los tipos de variables y eso tambien acelera el programa
https://es.wikipedia.org/wiki/Cython
Hay una pagina que explica los formateos de pithon y como hacer que ponga cero delante o x decimales detras.
https://pyformat.info/

l

#48 #140 Como curiosidad los lenguajes compilados tiende a compilar en un lenguaje intermedio.
Como LLVM. Puede ser mas rapido y tambien permite hacer un esamblado esperanto, que permita compilar a muchos arquitecturas de CPU
http://www.aosabook.org/en/llvm.html

D

#6 “Release Manager” toma ya!

D

#12 ¿pero sería masculino o femenino? ¿Las o los?

D

#23 Solo respondía a eso de "según el uso que se le dé". 24 horas de uso diario hacen que cualquier ahorro sea interesante.

D

#26 Y para esos casos (aplicaciones en python que usen match) instalas el python de la versión que lo soporte. Por eso tengo 2 y 3 en mi sistema.

llorencs

#33 No hace falta ser borde.

AlvaroLab

#4 Si conoces Python y conoces C, supongo que también sabes son lenguajes muy distintos. Creo que es un poco injusto compararlos.

Vamos a comparar con Ruby, con PHP... no sé.

AlvaroLab

#14 #37 #41 #17 Por favor, que alguien habra una batalla de ¿Cuál es el mejor lenguaje de programación? en Menéame. Las batallas políticas de estos foros van a quedar a la altura del betún.

AlvaroLab

#74 ya lo sé. Por eso encuentro divertido cuando forofos de distintos lenguajes se enzarzan. 😂 😂

D

#76 No sé cómo habrán podido medir el 25% de nada.

llorencs

#64 Con bastante concurrencia Python tiene bibliotecas asíncronas que hacen que pueda ejecutarse con bastante rendimiento. Por ejemplo FastAPI es un buen servidor web asíncrono en Python.

samuelCan

Me gustaría comparar este ahorro con estacionar mi SUV 5 minutos con el motor en marcha.

llorencs

#86 Python usando $ por todos lados? Si no lo usa por ningún lado. Y decir que su sintaxis es fea...

Más fea es la sintaxis de Javascript o los derivados de C.

Las tabulaciones son malas? Hacen que el código sea mucho más legible. Dios, como odio programas que no tabulan los bloques y se hacen dificiles de saber donde empieza y termina un bloque. Con las tabulaciones ves visualmente e inmediatamente lo que corresponde a un bloque.

pawer13

#18 El desarrollo inicial es el 20% del tiempo, el restante 80% del tiempo que un desarrollador va a estar leyendo y modificando ese código va a ser una vez que esté en producción: bug que se arreglan, modificaciones que se piden, nuevas funcionalidades... a menos que sea un código de usar y tirar, claro (campañas publicitarias, pruebas de concepto...).

pawer13

#46 Lamentablemente sí, en mi empresa estamos migrando todavía a Python 3 algunas cosas. Y uno de los motivos es porque no puedes ya programar en Python 2 cómodamente en los nuevos Macs porque no hay builds para la arquitectura del M1.

pawer13

#78 A mi me pone de los nervios presenciar esas discusiones, sobre todo porque todo el mundo defiende el lenguaje que a él le gusta/domina, porque no conoce el resto.

AlvaroLab

#92 Y porque se comparan churras con merinas... como se compara un Java para Android, con un Python para backend, con un Javascript para frontend...

llorencs

#94 Java no me entra. No lo trago. No hay manera.

En Python puedes hacer "closures" sin ningún problema. Son bastante habituales. Por ejemplo todos los decoradores vendrían de un "closure".

En strings modernos, lo del % no lo usas para nada. Yo nunca he necesitado esa sintaxis. Escribes algo así: f'mi nombre es: ' Y tira millas.

AlvaroLab

#102 Yo lo veo de forma muy distinta.
De hecho, me cuesta pensar aplicaciones para las que Python y C puedan, ambas, ser buenas opciones.

zentropia

#20 Eso no quiere decir que esté procesando requests 24h al día.

e

#134 https://chat.openai.com/chat

Pregunta: Tiene sentido comparar dos lenguajes de programación como C y python?

Sí, tiene sentido comparar diferentes lenguajes de programación y evaluar sus fortalezas y debilidades en diferentes contextos. C y Python son dos lenguajes de programación populares y ampliamente utilizados en diferentes ámbitos. C es un lenguaje de programación de bajo nivel y de propósito general, mientras que Python es un lenguaje de programación de alto nivel y también de propósito general.

C es conocido por su rendimiento rápido y eficiente en términos de uso de memoria y recursos del sistema. Es utilizado ampliamente en aplicaciones de sistema y en contextos donde se requiere un rendimiento óptimo. Python, por otro lado, se enfoca en la legibilidad y la simplicidad del código, lo que lo hace ideal para el desarrollo rápido de prototipos y aplicaciones de alto nivel.

En resumen, C y Python son lenguajes de programación muy diferentes y tienen diferentes fortalezas y usos. Al compararlos, es importante tener en cuenta el contexto en el que se está trabajando y elegir el lenguaje que mejor se adapte a las necesidades del proyecto.

*******

Vete a trolear otro, es mas que obvio que no tienes ni p idea o que me estas troleando o ambas. ADIOS.

sillycon

#48 me alegro de saber que se usa JIT, y me parece perfecto, pero la eficacia de esto siempre ha dependido mucho de la implementación. Cuándo se ejecuta el compilado, si ha habido variaciones, compatibilidad, etc. Mientras vaya bien fantástico, pero es más simple y elegante saltarse toda la complicación y usar lenguajes compilados.

sillycon

#142 cierto, pero el LLVM y los lenguajes generados con él son relativamente modernos. Sigue habiendo muchos lenguajes que compilan a ensamblador y de ahí a código maquina nativo. En cualquier caso en ninguno de los dos casos el código es interpretado en ejecución

p

#37 #14 #17 #34 Que yo recuerde Java es compilado e interpretado, un punto intermedio.

u

#35 echa un ojo también a #38, que también habla del tema.

O

#88 Efectivamente, el $ no es un símbolo básico de Python, lo he confundido con %, heredado de la sintaxis C, y que en mi opinión es horrible (hace unos tres años que empecé con Python y no lo he vuelto a tocar, afortunadamente).
Yo también soy un talibán de las tabulaciones pero eso no tiene nada que ver con que el sistema de llaves me parezca más cómodo y visual. Además las llaves permiten en lenguajes más modernos hacer closures , pasar comportamientos como argumento, etc que no creo que pudieran ser implementados sin llaves o algún otro símbolo que marque el inicio y fin de cada bloque. Al decir que no me gusta nada Python no quiero decir que JavaScript u otros lenguajes más veteranos sean más "bonitos", pero para ser Python un lenguaje relativamente reciente me parece bastante obsoleto estéticamente y encima con pobre rendimiento y limitaciones técnicas de despliegue. Si echas un vistazo a Swift o Kotlin, o incluso las últimas versiones de java, dices, joder qué cómodo e intuitivo todo.

O

#98 ¿Con números tampoco necesitas %?

O

#101 Para decidir el redondeo sí se usa %.
Pero vamos, que por eso no lo hace mejor ni peor lenguaje. Para empezar un lenguaje no tipado debería estar prohibido para grandes proyectos.

1 2