[Python] Che ne pensate?
Jacopo Cascioli
jacopocascioli a gmail.com
Mer 19 Apr 2017 23:30:21 CEST
Sembra interessante, ma è da un po' che ci sono framework Python in grado
di superare le performance di Node, anche senza sfruttare roba asincrona.
Il vero confronto che oggi conta per Python in questi termini è quello con
go, ed è esattamente dove uvloop va a parare.
Inoltre, in generale, se si pensa a come funziona Node, credo che chiunque
con un po' di conoscenza informatica sarebbe arrivato a capire che era solo
questione di avere il framework giusto, piuttosto che di linguaggio.
Personalmente, io vedo l'asincronicità come un'ottimizzazione, perciò ha
senso solo e solo se il limite è effettivamente dato dall'I/O, perchè molte
volte il problema non è quello. I benchmark vanno presi con le pinze anche
per questo: a volte la velocità in più ottenuta è dovuta ad ottimizzazioni
che non hanno niente a che fare con l'asincronicità.
In questo hanno usato pypy per falcon, ma non cython, per il quale falcon
ha un supporto migliore. Hanno usato gunicorn e non uwsgi, che in genere dà
risultati migliori e ed è quello che verebbe usato: questo va ancora a
vantaggio di sanic, visto che non ha bisogno di nessuno dei due. Sanic usa
websockets, falcon no, flask neppure e il problema di websockets è che non
ci fai API RESTful, perchè funziona in maniera completamente diversa.
Ancora: sanic usa ujson, ma falcon no e il benchmark riguarda proprio JSON!
Quindi, non è chiaro a cosa sia dovuta la performance di sanic, ma io
conosco molto bene falcon, e sono sicuro che fare lo stesso test, lanciando
falcon con uwsgi + ujson, darebbe altri risultati, fermo restando che
confrontare un framework websockets con uno che usa http è ridicolo.
Il fatto che ci sia un framework che la fornisce già pronta è positivo,
così il modo in cui la comunità sta digerendo e processando l'async in
Python. Il fatto che la questione sincrono/asincrono venga portata avanti a
benchmark fatti male invece è un cancro che va estirpato.
Jacopo
2017-04-19 21:26 GMT+02:00 Carlos Catucci <carlos.catucci a gmail.com>:
> Sorry, node.js, Python is faster!
>
> For a very long time now, node.js has evolved nicely. This was
> because, right from beginning, it was designed to run smoothly, non
> blocking, async mode.
>
> Green threads - instead of pthreads with giant overhead - were the
> right way for low latency applications.
>
> But now there is libuv module for Python 3. Means: Python still runs
> single thread with GIL, but libuv C module runs in a multi-threaded,
> interleaved way to serve tens of thousands of TCP/UDP clients
> smoothly.
>
> https://github.com/channelcat/sanic/blob/master/README.rst
>
>
> Carlos
> --
> EZLN ... Para Todos Todo ... Nada para nosotros
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20170419/14f2347d/attachment.html>
Maggiori informazioni sulla lista
Python