Questo profiler ha fondamentalmente due limitazioni. La prima è che esso conta sull'interprete Python per poter sbrigare eventi call, return ed exception. Il codice C non viene interpretato e quindi è ``invisibile'' al profiler. Tutto il tempo speso nel codice C (comprese le funzioni built-in dell'interprete), verrà considerato relativo alla funzione Python che ha invocato quel codice. Se poi il codice C chiama a sua volta altro codice Python, allora queste chiamate verranno profilate correttamente.
La seconda limitazione riguarda l'accuratezza dell'informazione sul tempo. Esiste un problema fondamentale dei profiler deterministici riguardo la loro accuratezza. La restrizione più ovvia riguarda ``l'orologio'' sottostante, che tipicamente ha una precisione di 0.001 secondi. Quindi non ci possono essere misure più accurate di 0.001 secondi. Se vengono prese sufficienti misurazioni ``l'errore'' tende a livellarsi. Sfortunatamente però, rimuovere questo primo errore ne induce un secondo.
Il secondo problema è dovuto all'attesa tra ``l'istante'' in cui avviene un evento e ``l'istante'' in cui la chiamata del profiler per ottenere il tempo di esecuzione acquisisce realmente lo stato del clock. Analogamente, esiste un certo intervallo di tempo tra l'uscita del gestore dell'evento del profiler ed il momento in cui il valore del clock è stato ottenuto (che è già trascorso), fino al momento in cui torna in esecuzione il codice utente. Alla fine le funzioni che vengono chiamate molte volte, o che chiamano molte funzioni, tendono in genere ad accumulare questo errore. L'errore generato in questa maniera di solito è minore della precisione del clock (inferiore al suo intervallo), ma può accumularsi e diventare molto significativo. Questo profiler offre un modo per calibrarsi in base ad una data piattaforma, cosicché questo errore possa probabilmente venire rimosso. Dopo la calibrazione del profiler, esso sarà molto più accurato(in un senso lato), ma a volte potrà produrre dei numeri negativi (quando il numero delle chiamate è eccezionalmente basso, ed i vantaggi della probabilità lavorano contro di voi :-) ). Non ci si deve preoccupare di questi numeri negativi, dovrebbero apparire solo se si è calibrato il profiler, e questi risultati sono sicuramente migliori che senza calibrazione.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.