[Python] R: Re: 10 myths
Paolo Di Ieso
paolodiieso a libero.it
Mer 25 Mar 2015 13:27:42 CET
----Messaggio originale----
Da: s.federici a gmail.com
Data: 25/03/2015 13.14
A: "Discussioni generali sul linguaggio Python"<python a lists.python.it>
Ogg: Re: [Python] 10 myths
Nicola Larosa <nico a teknico.net>:
Impatta la scalabilità. Usare un thread per ogni operazione concorrente significa esser limitati a qualche migliaio di esecuzioni contemporanee, con alti consumi di memoria.
Per arrivare a milioni di connessioni contemporanee bisogna usare approcci più come gli eventi asincroni, o i "processi" di Erlang, o appunto le goroutine del runtime di Go.
Vista la vostra esperienza,
giusto per paragone, visto che conosco bene java,
Per scalare milioni di connessioni si usa un selector thread che gestisce tutte le connessioni chiamate native I/O e attiva un thread da un pool per gestire la richiesta una volta che che è arrivata. Questo permette di avere migliaia di connessoni per JVM.
Tenendo conto che l'I/O è estremamente più lento di gestire una richiesta, un solo selector thread gestisce facilmente tante socket ciclando su ognuona di esse in modo sequenziale.
E i threads che gestisono le richieste sono rapidi in quanto non non sono appesi ad aspettare bytes dalle socket.
c'è una libreria python che si avvicina a questo modello?
Se ho capito bene, Futures?
https://www.python.org/dev/peps/pep-3148/
https://pypi.python.org/pypi/futures
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150325/b6a7c6a4/attachment.html>
Maggiori informazioni sulla lista
Python