[Python] TIOBE vs PYPL

Manlio Perillo manlio.perillo a gmail.com
Gio 26 Dic 2013 14:40:02 CET


On 26/12/2013 09:54, Roberto De Ioris wrote:
> [...]
>> Ma come!!!
>> Le go routine **sono** thread, come tra l'altro viene scritto nei
>> documenti che hai riportato.
>>
>> La differenza č che sono thread gestiti dal runtime di Go, con alcune
>> proprietā che li rendono flessibili per la concorrenza (invece sospetto
>> che non siano adatti per il parallelismo).
>>
>
> Di base e' cosi' (niente parallelismo), pero' puoi specificare tramite una
> variabile d'ambiente (GOMAXPROCS) su quante cpu vuoi "spalmare" le
> goroutine (che poi in realta' significa lanciare piu' pthread su cui lo
> scheduler distribuisce le goroutine)
>

Si, lo sapevo.
E' come il runtime di GHC (uno dei migliori, almeno come 
configurabilitā, IMHO), e probabilmente quello di Erlang (che non conosco).

> Questo ti permette di parallelizzare alcuni task.
>

Ho i miei dubbi.
Il problema č che non sai se le tue N goroutine siano effettivamente 
eseguite su N thread diversi.  Ti devi fidare e sperare, anche se ho 
letto che in questo senso il runtime di Go cerca di ottimizzare.


> Sono meglio dei pthread nativi ? boh.
>

Io, come sempre, preferisco avere gli strumenti di basso livello con API 
disegnate bene.  Questo significa processi, thread e coroutine ("raw", 
senza runtime per lo scheduling).  Poi decido io cosa e come usare di 
caso in caso.

> [...]
> Lo goroutine sono thread ? per dare una risposta bisognerebbe capire cosa
> si intende con "thread"...
>

Direi la classica:
stack + copia dei registri + eventuale thread local storage

Proprio il fatto che ogni thread ha bisogno di stack, causa uno dei 
problemi di utilizzo di memoria efficiente con i "green threads" (basta 
avere migliaia di green threads che fanno cose non banali).


Ciao  Manlio


Maggiori informazioni sulla lista Python