2014-09-23 19 views
8

Ho eseguito cProfile su uno script di python 3, ha funzionato bene, quindi ho provato a visualizzarlo utilizzando runnake. Comunque, ho ottenuto uno schermo vuoto e l'errore "cattivi dati del maresciallo".Errore Maresciallo cattivo - runnake

Ho rimosso il file .pyc ma non ha funzionato.

Il codice che ho usato per l'installazione runsnake era:

sudo apt-get install python-profiler python-wxgtk2.8 python-setuptoolD 
    sudo easy-install installSquareMap RunSnakeRun 

Sto usando Ubuntu.

Molte grazie.

nota: Vorrei aggiungere che ho installato tutto, mentre py3k è stato attivato

risposta

5

Ho avuto lo stesso problema. Per quanto posso dire, il pacchetto RunSnakeRun non è stato portato su Python3. Almeno, potrei collegarlo a python2 ma non a python3 (SyntaxError). Inoltre, I penso il formato di output di cProfile non è compatibile con Python 2/3. Non ho trovato il tempo per trovare una conferma definitiva, ma nel documento di cProfile class pstats.Stats(*filenames, stream=sys.stdout), dicono "Il file selezionato dal costruttore sopra deve essere stato creato dalla corrispondente versione di profilo o cProfile. non è garantita la compatibilità dei file con le versioni future di questo profiler e non c'è compatibilità con i file prodotti da altri profiler. ". Questa sembra essere l'origine del tuo problema. Per esempio, ho fatto un profilo di destinazione da python3

import cProfile 
cProfile.run('some code to profile', 'restats') 

e ho cercato di aprirlo in RunSnakeRun e ottenuto lo stesso errore marhsal che hai. Inoltre, se lo faccio

import pstats 
p = pstats.Stats('restats') 
p.strip_dirs().sort_stats(-1).print_stats() 

in python3, funziona come un fascino. Se lo faccio in python2, dà l'errore di marshall. Ora, RunSnakeRun viene eseguito in python2 (a meno che tu non abbia trovato un modo per farlo funzionare in python3). Quindi, la mia ipotesi è che tu abbia eseguito il tuo profilo in python3 e stia usando strumenti basati su python2 per analizzarli, quali strumenti si aspettano che l'output sia compatibile con python2.

Il progetto RunSnakeRun sembra essere inattivo da un po 'di tempo (il copyright su home page è 2005-2011) e non vi è alcuna indicazione che verrà portato su python3 .... Forse considerare lo strumento di visualizzazione alternativo potrebbe essere il migliore strada da fare per te se vuoi sviluppare in Python3. pyprof2calltree in combinazione con KCachegrind ha funzionato bene per me in Linux. Può fornire una visualizzazione visiva simile dell'output di creazione profili come si otterrebbe da RunSnakeRun.

Problemi correlati