Scrivo un'app di elaborazione delle immagini che deve eseguire più operazioni e deve eseguirle il più possibile in tempo reale. L'acquisizione dei dati e il loro trattamento vengono eseguiti in processi separati (principalmente per motivi di prestazioni). I dati stessi sono piuttosto grandi (immagini a 16 bit in scala di grigi a 16 bit).Allineamento della memoria per FFT veloce in Python utilizzando arresti condivisi
Posso condividere matrici tra processi come descritto in questo post: How do I pass large numpy arrays between python subprocesses without saving to disk? (utilizzo lo script shmarray dal pacchetto numpy-shared). Posso eseguire Numpy FFT fornito su quei dati senza problemi, ma è piuttosto lento.
Chiamare FFTW sarebbe probabilmente molto più veloce, ma per trarne il massimo vantaggio, dovrei eseguire le mie operazioni su array allineati in memoria.
La domanda: esiste un modo per creare e condividere matrici simili a Numpy tra processi, che sono, allo stesso tempo, garantiti per l'allineamento della memoria?
Cosa binding Python FFTW si usa? Questi collegamenti dovrebbero fornire un modo per allocare blocchi di memoria correttamente allineati. –
Hai ragione, ma la parte difficile è che ho bisogno di condividere quegli array tra più processi. Sono abbastanza sicuro che quelle funzioni non creano array "condivisi". – bubla