2009-11-17 1 views
6

Sto notando che il mio server di sviluppo django (versione 1.1.1) sulla mia macchina Windows7 locale utilizza molta CPU (~ 30%, in base alla voce python.exe del task manager), anche in stato di attesa, cioè no richiesta di entrare/uscire. C'è un modo stabilito di analizzare ciò che potrebbe essere responsabile di questo?Server di sviluppo Django intensivo della CPU - come analizzare?

Grazie!

Martin

+0

Hai cercato google per informazioni sul profiler Python? –

+0

Python.exe è il processo responsabile :) Potresti voler rivedere il tuo post per dire "scopri cosa potrebbe causare questo". –

risposta

12

FWIW, si dovrebbe fare il profiling, ma quando lo fai Scommetto si scopre che la risposta è "polling per modifiche ai file in modo che possa auto-reload". Potresti eseguire un test rapido con "python manage.py runserver --noreload" e vedere come questo influisce sull'utilizzo della CPU.

+0

questo ha fatto la magia - utilizzo della CPU in stato di inattività dropepd a 0% ... – Hoff

3

Hit Control-C e crash del processo. Probabilmente andrà in crash da qualche parte che passa molto tempo.

Oppure è possibile utilizzare un profiler.

+1

Potresti pensare che sia uno scherzo, ma seriamente, questo può essere un modo veloce per scoprire dove il tuo programma impiega molto tempo. Oltre questo approccio rapido e brutale, usa un profiler. – steveha

0

L'approccio standard consiste nell'utilizzare un profiler. Se, per qualche motivo, non è possibile (come non esiste un profiler disponibile nel modpython Apache che sta eseguendo il tuo Django) la tua migliore scommessa potrebbe essere semplicemente quella di strumentare il tuo programma con la registrazione. Guarda i messaggi del tuo programma e guarda cosa puoi imparare da loro.

Se viene visualizzato un messaggio di "Inserimento CalculateFoo()" e poi cinque secondi dopo "Uscita da CalculateFoo()" che è un indizio importante lì. O se una particolare funzione continua a stampare ancora e ancora e ancora.

Ecco una breve discussione sulla registrazione di Python.

Python debugging tips

EDIT: Ho appena notato che hai specificamente detto che questo è il tuo desktop di Windows 7. Quindi, usa un profiler. Ma lascerò questa risposta per coprire il caso generale.