Treading vs Multiprocessing vs Programmazione asincrona

Feb 22 2023
Il threading, il multiprocessing e la programmazione asincrona sono tutti metodi per stabilire il parallelo in un computer, ma i loro modi per gestire più attività contemporaneamente. In questo post del blog esamineremo la logica dietro di loro.
Thread Programmazione asincrona multiprocessing

Il threading, il multiprocessing e la programmazione asincrona sono tutti metodi per stabilire il parallelo in un computer, ma i loro modi per gestire più attività contemporaneamente. In questo post del blog esamineremo la logica dietro di loro. Inoltre vedremo le differenze.

Discussioni

Il threading è l'elaborazione di numerosi thread all'interno di un singolo processo .
Ogni thread condivide la stessa memoria e le stesse risorse, ma può svolgere diverse attività contemporaneamente.
I thread sono leggeri e possono essere prodotti ed eliminati velocemente, ma possono causare race condition , deadlock e problemi di accesso alle risorse condivise .

Quando si verificano condizioni di gara?

Una condizione di competizione è una situazione che può verificarsi nella programmazione simultanea o parallela quando più thread tentano di accedere contemporaneamente a una variabile condivisa.

Il primo thread legge la variabile e il secondo thread legge il valore della variabile. Il primo e il secondo thread quindi eseguono le loro azioni sul valore, correndo per determinare quale thread può scrivere per primo il valore nella variabile condivisa. Poiché il thread sta sovrascrivendo il valore scritto dal thread precedente, viene mantenuto il valore del thread che pubblica il suo valore per ultimo.

Quando si verificano i deadlock?

Un deadlock si verifica quando due thread bloccano variabili diverse contemporaneamente e quindi tentano di bloccare la variabile che l'altro thread ha già bloccato. Di conseguenza, ogni thread rileva un errore e termina l'esecuzione.

Multielaborazione

Il multiprocessing esegue più processi per più attività con il proprio spazio di memoria e risorse . I processi possono comunicare tra loro attraverso la comunicazione tra processi (IPC), ma non possono accedere direttamente alla memoria dell'altro. Il multiprocessing è più forte del threading, ma ha un costo maggiore poiché richiede la creazione e la gestione di processi separati.

IPC

IPC è un termine che sta per "Inter-Process Communication" e si riferisce alle tecniche che i sistemi operativi utilizzano per consentire a diversi processi di comunicare tra loro.

In un sistema operativo moderno, più processi possono essere eseguiti contemporaneamente ed eseguire la propria attività con uno spazio di memoria e una risorsa diversi. Ma ci sono situazioni in cui questi singoli processi devono scambiarsi dati o comunicare tra loro. IPC fornisce un modo per questi.

Programmazione asincrona

La programmazione asincrona utilizza un singolo thread per gestire più attività contemporaneamente arrestandole e riavviandole secondo necessità. Questo viene in genere fatto utilizzando le coroutine, che consentono il multitasking cooperativo. La programmazione asincrona è ideale per le attività legate all'I/O in cui il programma trascorre una notevole quantità di tempo in attesa del completamento dei processi di input/output.

Ad esempio, se desideri aprire un file, il tuo programma continuerà mentre il file è aperto (a meno che altre attività non debbano aprire il file)