La domanda su come accelerare l'importazione dei moduli Python è stata precedentemente richiesta (Speeding up the python "import" loader e Python -- Speed Up Imports?) ma senza esempi specifici e non ha prodotto soluzioni accettate. Pertanto riprenderò il problema qui, ma questa volta con un esempio specifico.miglioramento della velocità dell'importazione del modulo Python
Ho uno script Python che carica uno stack di immagini 3D dal disco, lo ammorbidisce e lo visualizza come film. Io chiamo questo script dal prompt dei comandi di sistema quando voglio visualizzare rapidamente i miei dati. Sto bene con i 700 ms necessari per appianare i dati in quanto è paragonabile a MATLAB. Tuttavia, occorrono altri 650 ms per importare i moduli. Quindi dal punto di vista dell'utente il codice Python funziona a metà della velocità.
Questa è la serie di moduli che sto importando:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.ndimage
import scipy.signal
import sys
import os
Naturalmente, non tutti i moduli sono ugualmente lento da importare. I colpevoli principali sono:
matplotlib.pyplot [300ms]
numpy [110ms]
scipy.signal [200ms]
ho sperimentato con l'utilizzo di from
, ma questo non è più veloce. Dal momento che Matplotlib è il principale colpevole e ha una reputazione per gli aggiornamenti a schermo lento, ho cercato delle alternative. Uno è PyQtGraph, ma per l'importazione occorrono 550 ms.
Sono a conoscenza di una soluzione ovvia, ovvero chiamare la mia funzione da una sessione Python interattiva anziché dal prompt dei comandi di sistema. Questo va bene, ma è troppo MATLAB-like, preferirei l'eleganza di avere la mia funzione disponibile dal prompt di sistema.
Sono nuovo di Python e non sono sicuro di come procedere a questo punto. Dato che sono nuovo, gradirei link su come implementare le soluzioni proposte. Idealmente, sto cercando una soluzione semplice (non lo siamo tutti!) Perché il codice deve essere portatile tra più macchine Mac e Linux.
Controllare che sta producendo versioni .pyc dei moduli Python - loading questi è un po 'più veloce. Ma quei numeri sono abbastanza plausibili anche se i file pyc ci sono. –
Inoltre, se hai molte directory .egg su 'sys.path', cerca i moduli all'interno di ognuno, il che rallenta le cose. Utilizzare un gestore di pacchetti di distribuzione o un pip per installarli in un layout migliore. È improbabile che tu abbia una maggiore accelerazione, comunque. –
Avevo notato il suggerimento del pyc in una domanda precedente, ma non so dove cercare le versioni pyc dei moduli. In questo momento sono su un Mac. – RAAC