lingue con supporto per il thread nativo

-1

Sto studiando i modi per rendere più efficiente il mio pacchetto di processi di richiesta di rete Python e mi sono interessato a persone come Go e Julia per il loro apparente supporto per la concorrenza e il modello di threading verde.

Mentre leggevo i thread a livello di utente, sembrava che quello che mi interessava fosse il threading a livello di kernel per sfruttare appieno l'architettura multicore e ridurre le penalità di cambio di contesto. Ma ora ho letto le informazioni in conflitto su quale modello di threading implica maggiori penalizzazioni di cambio di contesto.

Per essere chiari, attualmente ho circa 18 processi Python 2.7 che si attivano e che eseguono principalmente l'elaborazione legata alla rete su una scatola dual core. Questo mi sembra pesante, quindi guardo le lingue che supportano l'efficiente threading. Immagino che il cambio di contesto sia qualcosa che si applica solo nel caso di più processi (o forse si applica anche a thread di memoria condivisi?) Non è sicuro quindi quale sarebbe il tipo di threading più efficiente per un "superprocesso" per CPU che genera molti lunghi vivo (essenzialmente un pool di) piccoli thread legati alla rete all'avvio?

    
posta user1561108 06.05.2017 - 10:58
fonte

1 risposta

2

Non è davvero rilevante se il linguaggio di programmazione ha incorporato il supporto multithreading o no, ma se può creare thread del kernel o meno. Molte lingue possono utilizzare varie librerie piuttosto che avere un supporto integrato.

In Python, i thread sono thread del kernel ma non è possibile eseguire le istruzioni contemporaneamente. Tuttavia, altri thread possono essere eseguiti se uno di essi è bloccato in attesa di un'operazione di I / O. Che è utile per attività legate all'I / O (come le tue), ma non per le attività legate alla CPU.

Ogni volta che usi thread o processi devi fare le opzioni di contesto. L'interruttore di contesto del thread è più efficiente dell'interruttore di contesto del processo poiché non è necessario modificare lo spazio di memoria.

Quindi, un thread Python è una buona soluzione al tuo problema, considerando le operazioni di I / O associate.

    
risposta data 06.05.2017 - 11:56
fonte

Leggi altre domande sui tag