Ho un problema, che è simile a questo:Python multiprocessing e condiviso serie NumPy
import numpy as np
C = np.zeros((100,10))
for i in range(10):
C_sub = get_sub_matrix_C(i, other_args) # shape 10x10
C[i*10:(i+1)*10,:10] = C_sub
Quindi, a quanto pare non v'è alcuna necessità di eseguire questo come un calcolo di serie, dal momento che ogni sottomatrice può essere calcolato in modo indipendente. Vorrei utilizzare il modulo multiprocessing e creare fino a 4 processi per il ciclo for. Ho letto alcuni tutorial sul multiprocessing, ma non sono riuscito a capire come usarlo per risolvere il mio problema.
Grazie per il vostro aiuto
Affinché multiprocessing per ottenere il miglioramento delle prestazioni dei calcoli ** ** must prendere tempo significativo. Poiché la multiprocessing sta per * serializzare * i dati, inviarli ai sottoprocessi, deserializzarli ed eseguire i calcoli, serializzare il risultato, inviarlo al processo principale e infine deserializzarlo. La serializzazione/deserializzazione richiede molto tempo e la comunicazione tra processi non è altrettanto veloce. Se 'get_sub_matrix' è letteralmente solo un paio di accessi alla matrice, non otterrai alcuna velocità. – Bakuriu
Questo è solo a scopo illustrativo. Alla fine la mia matrice avrà dimensioni di circa 100.000 x 20000, ma ciò che è più importante è che la get_sub_matrix_C è un po 'lenta e penso che non posso fare quella funzione più velocemente. – RoSt
Get_sub_matrix_C deve accedere a tutta la matrice o solo alla sottomatrice? perché, se ha bisogno di tutto, la serializzazione di una copia della matrice grande per ogni sottoprocesso sarà molto tempo e consumerà molta memoria. – eguaio