Nasıl python kodu satır satır profili miyim?
CProfile benim profil kod kullanıyorum ve harika çalışıyor. Ben de gprof2dot.py sonuçlar (biraz daha net yapar) görselleştirmek için kullanın.
Ancak, cProfile (ve şimdiye kadar gördüğüm en diğer python profilciler) fonksiyonu-çağrı düzeyde tercih gibi görünüyor. Bu belirli işlevleri çağrıldığında karışıklık farklı yerlerden - çağrı #1 veya #2 Arama vaktimin çoğunu alıyor hiçbir fikrim yok neden. Bu söz konusu işlevi 6 düzeyleri derin, 7 diğer yerlerden söyleyince daha da kötü olur.
Yani benim soru: nasıl-satır-satır analiz alabilirim? Bunun yerine:
function #12, total time: 2.0s
Böyle bir şey görmek istiyorum
function #12 (called from somefile.py:102) 0.5s
function #12 (called from main.py:12) 1.5s
cProfile toplam zaman "" ana, ama yine bu bağlantı katmanları ve birbirine bağlı bir sürü arama var kaybolur. nasıl transfer ettiğini gösteriyor
İdeal olarak, veri ayrıştırılamadı, gösterin o zaman benim kaynak toplam süre her satırda bir dosya ile verilen bir GUI olmasını çok isterdim. Şöyle bir şey:
main.py:
a = 1 # 0.0s
result = func(a) # 0.4s
c = 1000 # 0.0s
result = func(c) # 5.0s
İkinci "(c) "işlev(a)" çağrısı. bu çağrı, ayrı zaman ayırmak kadar ne olduğunu görmek için" çağrı işlevi tıklatın için mümkün olurdu o zaman
Bu mantıklı mı? Bilgi bu tür toplayan herhangi bir profil kütüphanesi var mı? Özledim ben muhteşem bir araç var mı? Herhangi bir geri bildirim takdir edilmektedir. Teşekkürler!!
CEVAP
Robert Kern's line_profiler içindir diye düşünüyorum. Bağlantı:
File: pystone.py
Function: Proc2 at line 149
Total time: 0.606656 s
Line # Hits Time Per Hit % Time Line Contents
==============================================================
149 @profile
150 def Proc2(IntParIO):
151 50000 82003 1.6 13.5 IntLoc = IntParIO 10
152 50000 63162 1.3 10.4 while 1:
153 50000 69065 1.4 11.4 if Char1Glob == 'A':
154 50000 66354 1.3 10.9 IntLoc = IntLoc - 1
155 50000 67263 1.3 11.1 IntParIO = IntLoc - IntGlob
156 50000 65494 1.3 10.8 EnumLoc = Ident1
157 50000 68001 1.4 11.2 if EnumLoc == Ident1:
158 50000 63739 1.3 10.5 break
159 50000 61575 1.2 10.1 return IntParIO
Bu yardımcı olur umarım!
Nasıl (şap) Python bir satır kaldırabi...
Nasıl bir satır sonu (line devamı) Pyt...
Nasıl Eclipse Satır Numaraları göstere...
Nasıl kalıcı olarak Kişisel satır numa...
Nasıl bir yeni satır (\n) sed kullanar...