C# parallelo foreach

C# parallelo foreach
In questo articolo, ci concentreremo sul parallelo foreach loop nel linguaggio di programmazione C#. La parola parallela alla programmazione C# deriva dal concetto di attività di threading, il che significa che quando eseguiamo più di un'attività contemporaneamente Oltre questi compiti in quanto sono più efficienti e meno richiedono tempo rispetto ai normali loop sequenziali per. Il parallelo foreach loop divide i compiti e gestisce le iterazioni in più di un flusso per arrivare al gol finale. Il forea parallelo viene utilizzato solo quando un processo viene richiesto iterativamente per l'input ed è co-dipendente su altre operazioni in quanto aumenta il ritmo dei processi.

Ora eseguiremo diversi esempi per chiarire e aumentare la comprensione del ciclo parallelo foreach nel linguaggio di programmazione C#.

Esempio 01: aggiunta di numeri a un elenco utilizzando il loop parallelo foreach in Ubuntu 20.04

In questo esempio, scriveremo un programma C# per aggiungere numeri a un elenco utilizzando il loop parallelo foreach e contrassegnare il numero di thread contemporaneamente assegnati a ciascun passaggio. Dovremo utilizzare librerie diverse come l'attività di threading e il collegamento per accedere al monitoraggio e all'efficienza del parallelo per ogni loop. Eseguiremo questo esempio in Ubuntu 20.04 ambiente.G

Nel codice sopra, abbiamo generato un elenco utilizzando il parallelo per ogni ciclo in cui i numeri sono stati assegnati all'elenco con l'aiuto della funzione di intervallo. Quindi abbiamo anche stampato gli ID del thread in ogni fase per monitorare il numero di thread utilizzati durante l'assegnazione di valori all'elenco. Dopo aver eseguito questo file di programma nel nostro terminale di comando, otterremo il seguente output:

L'output suggerisce che all'elenco sono stati assegnati 5 valori e durante questo processo sono stati utilizzati due thread, che hanno creato una differenza di tempo nell'esecuzione di questa attività. Se potessimo utilizzare un semplice ciclo sequenziale foreach, l'attività sarebbe stata eseguita in un singolo thread e l'esecuzione sarebbe maggiore del tempo di esecuzione del parallelo foreach loop. Sebbene ciò varierebbe in quanto dipende dalle dimensioni dell'attività a portata di mano poiché il ciclo parallelo foreach è più conveniente per le dimensioni più grandi del compito e l'elaborazione perché divide l'attività in più thread e funziona con l'approccio "divisione e conquista.

Esempio 02: Numero di controllo di thread usando il loop parallelo forea in Ubuntu 20.04

In questo esempio, controlleremo la creazione del numero di thread quando viene eseguito un ciclo di forea parallelo. La libreria di threading di attività ci consente di accedere a una proprietà etichettata "grado massimo di parallelismo" che controlla le operazioni parallele della classe di opzioni parallele e l'assegnazione di un valore a questa proprietà definisce il numero di operazioni parallele da eseguire durante il programma. Questa proprietà viene inviata al parallelo foreach loop attraverso un argomento. Creeremo un programma C# per assegnare i numeri a un elenco e definire il numero di thread per eseguire questa attività.

Come possiamo vedere che il numero totale di thread utilizzati nell'esecuzione di questa attività era solo 2, poiché abbiamo risolto questo numero assegnando il valore al "grado massimo di parallelismo."In caso di un'enorme quantità di elaborazione dei dati, possiamo variare il valore assegnato al massimo grado di parallelismo; Questo ci aiuterà a dividere la potenza di elaborazione in modo uguale ed efficiente tra le attività secondarie o le operazioni parallele.

Esempio 03: Elenco di stampa con variabili di stringa utilizzando il loop parallelo foreach in un programma C# in Ubuntu 20.04

In questo esempio, stamperemo gli elementi di un elenco con variabili di stringa utilizzando il ciclo parallelo foreach in un programma C# in Ubuntu 20.04 ambiente. Inizializzamo prima un elenco e assegneremo i valori manualmente e quindi stamperemo tutti i suoi elementi come output utilizzando il loop parallelo forea.

Nel codice sopra, abbiamo effettuato un elenco denominato continenti e aggiunto nomi dei continenti all'elenco prima di utilizzare il parallelo per ciascun ciclo. Abbiamo aggiunto la libreria di attività di threading per utilizzare il ciclo parallelo foreach per il nostro codice. Il metodo parallelo Forech assume nell'elenco e un nuovo oggetto come parametro per archiviare temporaneamente i valori per ogni iterazione. Dopo aver eseguito questo file di codice nel nostro terminale di comando, otterremo l'elenco dei nomi dei continenti che abbiamo salvato in precedenza nel nostro elenco.

Esempio 04: Confronto del tradizionale ciclo foreach con sequenziale usando il loop parallelo foreach in c# in ubuntu 20.04

In questo esempio, confronteremo il tradizionale ciclo foreach con la sua proprietà sequenziale con il parallelo foreach loop svolgendo un compito simile con entrambi i loop. Il tempo di esecuzione di entrambi i loop sarà diverso a causa del loro diverso approccio al compito. Stamperemo il contenuto dell'elenco, che verrà inizializzato prima dell'operazione, utilizzando il tradizionale ciclo foreach con la sua proprietà sequenziale e il parallelo per ogni loop.

Nel programma C# sopra, stiamo usando un normale ciclo foreach e un ciclo parallelo foreach e calcolando il tempo impiegato per eseguire l'attività da entrambi i loop; Useremo la classe StopWatch dalla libreria "Diagnostica" del linguaggio di programmazione C#. La classe StopWatch ha un metodo "startNew ()", che avvia il cronometro e la funzione Elsed () viene utilizzata per fermare il cronometro. Entrambe queste funzioni sono state rese accessibili creando un oggetto della classe StopWatch.

L'output mostra che il tradizionale ciclo foreach ha richiesto meno tempo nell'esecuzione del compito rispetto al parallelo foreach loop. Il motivo è che l'esecuzione dell'attività è più adatta per un'operazione a thread singolo e la creazione di più thread per questa attività richiederebbe tempo, ma se l'elenco avrebbe comportato migliaia di dati, il tempo di esecuzione sarebbe viceversa Perché in quello scenario threading l'attività sarebbe efficiente e risparmiando nel tempo. Quindi, quando si utilizza il ciclo parallelo foreach, dobbiamo osservare le dimensioni della potenza di elaborazione richiesta per quell'operazione e considerare quale sarà il ciclo adatto per quell'operazione.

Conclusione:

Abbiamo discusso del parallelo foreach loop nel linguaggio di programmazione C#. In questo articolo è stato discusso il significato del nome "parallelo", così come le differenze pratiche tra un ciclo parallelo foreach e un ciclo di forea standard. Quindi abbiamo implementato diversi esempi del parallelo foreach loop in Ubuntu 20.04 ambiente per cogliere più chiarezza sull'argomento. Abbiamo concluso che l'uso di un ciclo di forea parallelo deve essere monitorato durante la programmazione in quanto può andare in entrambi i casi a causa del suo meccanismo di threading; Il compito è diviso, il che richiederebbe tempo nel caso di un compito più piccolo.