Multiprocessing / multithreading che coinvolge 2 dataframe in Python

Spesso, i test di ipotesi diverse richiedono la ripetizione di discussioni di dati e ingegneria che coinvolgono 2 o più frame di dati separati. Di solito si consiglia di incorporare un’elaborazione parallela per il data wrangling / engineering dall’inizio. Questo ci farà risparmiare tonnellate di tempi di attesa ripetuti e ci consentirà di procedere rapidamente alle analisi descrittive / di correlazione / predittive a valle.

H ere, supponendo di lavorare su dati strutturati utilizzando panda DataFrame. Useremo il pacchetto multiprocessing in Python per eseguire i lavori di elaborazione parallela.

2. Successivamente, prepariamo blocchi di dati suddivisi per multiprocessing / multithreading.

3. Successivamente, definiamo una funzione per calcolare la distanza euclidea tra i punti dai 2 dataframe.

4. Successivamente, associamo i lavori suddivisi al pool di 3 processi della CPU in modo che la distanza euclidea possa essere calcolata contemporaneamente per i 3 set di frame di dati corrispondenti. Qui utilizziamo la funzione zip() per elencare i dataframe come ordine dell’elenco. Ho anche notato che alcune volte dobbiamo usare multiprocessing.pool.ThreadPool(), cioè multithreading, invece di multiprocessing.Pool () , ovvero multiprocessing, per avere i caricamenti completi della CPU previsti e un’elaborazione veramente veloce.

5. Infine, ho controllato l’utilizzo della CPU utilizzando la funzione top sul terminale. In effetti, funzionavano in parallelo con quasi 3 CPU a pieno carico.

Opzionale 1: separatamente, se sei interessato a calcolare la distanza dei soggetti in tutti i blocchi df_source dai soggetti in uno solo dei blocchi df_target, puoi utilizzare intertools.repeat () insieme alla funzione zip () . Qui, abbiamo ripetuto il primo blocco di df_target per 3 volte durante la compressione con i diversi blocchi di df_source.

Opzionale 2: infine, ci sono codici aggiuntivi che trovo utili durante il mio lavoro di routine. Ad esempio, se vogliamo dividere df_source in base al numero di lavori che vogliamo e indipendentemente dal raggruppamento di etichette, possiamo utilizzare i seguenti codici. Innanzitutto, dobbiamo reimpostare l’indice per df_source.

Se ritieni che i tutorial sopra riportati siano utili, potresti considerare di aggiungere questa pagina ai segnalibri nel tuo browser per riferimento futuro. Se hai bisogno di aiuto, puoi lasciare un commento qui sotto;)