[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