10.8 Estensioni -- Derivare profiler migliori

La classe Profile del modulo profile è stata scritta con l'obiettivo di permettere l'estensione del profiler in classi derivate. I dettagli non vengono descritti qui, in quanto offrire una spiegazione proficua richiede una conoscenza esperta della struttura interna della classe Profile. Studiare il codice sorgente del modulo profile è un ottimo sistema per capire come funziona.

Se l'unico obiettivo è quello di cambiare il modo in cui viene calcolato il tempo corrente (per esempio, forzare l'utilizzo del tempo di clock del bios o il tempo speso dal processo), passate la funzione timer scelta al costruttore della classe Profile:

pr = profile.Profile(your_time_func)

Il profiler così ottenuto invocherà quindi your_time_func(). La funzione dovrebbe restituire un solo numero, o una lista di numeri la cui somma è il tempo corrente (in modo simile ad os.times(). Se la funzione restituisce un solo numero, o la lista di numeri restituiti ha lunghezza 2, allora otterrete una versione particolarmente veloce della procedura d'invio.

Prestate attenzione al fatto che sarebbe meglio calibrare il profiler in base alla funzione timer scelta. Su molti computer, un timer che restituisce un solo valore intero offrirà risultati migliori in termini di bassi rallentamenti durante la profilatura. (os.times() è piuttosto scarsa, dato che restituisce una tupla di valori in virgola mobile). Se volete sostituire un timer migliore nella maniera più pulita, derivate una classe e reimplementate il metodo che mostra i risultati finali in modo che gestisca meglio il timer che avete scelto, insieme all'appropriata costante di calibratura.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.