Python için görsel profil oluşturucu var mı? [kapalı]


99

Şimdi cProfile kullanıyorum, ancak istatistik verilerini sorgulamak için pstats kodu yazmayı sıkıcı buluyorum.

Python kodumun CPU zamanı ve bellek ayırma açısından ne yaptığını bana gösteren görsel bir araç arıyorum.

Java dünyasından bazı örnekler visualvm ve JProfiler'dir .

  • Böyle bir şey var mı?
  • Bunu yapan bir IDE var mı?
  • Misiniz Dtrace yardım?

Linux için KCachegrind'i biliyorum , ancak KDE'yi kurmadan Windows / Mac'te çalıştırabileceğim bir şeyi tercih ederim.


5
Böyle bir program henüz mevcut değilse, harika bir açık kaynaklı proje olur.
carl

@cvondrick Bunun gibi bir program var ve daha önce bahsedilmişti: KCachegrind.
Devin Jeanpierre

1
@Devin, evet ama soruya bakın. :-)
carl

Bu tekniğin farkında mısınız: stackoverflow.com/questions/375913/… Görsel değil, ama sıkıcı da değil ve etkililiği için yenmek zor.
Mike Dunlavey 01

4
@KCacheGrind severler: KDE'yi yüklemek zorunda olmamak için herhangi bir neden, KCacheGrind'i kullanmamak için iyi bir nedendir.
Matt Joiner

Yanıtlar:


86

Bir arkadaşım ve ben bir web tarayıcısında çalışan SnakeViz adlı bir Python profil görüntüleyici yazdık . Eğer zaten başarılı bir şekilde RunSnakeRun kullanıyorsanız SnakeViz bu kadar değer katmayabilir, ancak SnakeViz'in kurulumu çok daha kolaydır.

Düzenleme: SnakeViz, Python 2 ve 3'ü destekler ve tüm ana sistemlerde çalışır.


41

Ben sadece RunSnakeRun'un farkındayım .

Bir süre önce PyDev'de (Eclipse) entegre bir profil oluşturucu hakkında bazı konuşmalar vardı, ancak bunun gün ışığını görüp göremeyeceğini bilmiyorum.

Güncelleme: Maalesef RunSnakeRun artık korunmuyor ve Python 3'ü desteklemiyor gibi görünüyor.


RunSnakeRun için +1. En iyi araç IMHO.
codeape

4
RunSnakeRun iyi, ancak ne yazık ki şu anda Python 3'te çalışmıyor. (Haziran 2014 için geçerli.)
Ram Rachum

@Ram: Bilgi için teşekkürler, talihsiz bir durum :-(.
nikow

1
Onun yerine pyinstrument kullandım. Farklı bir hayvan, ama kullanışlı.
Ram Rachum

RunSnakeRun'u seviyorum, ancak arayanları ve arayanları görüntülemesinden kesinlikle hoşlanmıyorum. RunSnakeRun, her arayan / arayan uç için arama sayıları, yerel saat ve kümülatif süre için "toplam" değerleri gösterecektir. Bu nedenle, toplam süresi 5 saniye olan ancak toplam süresi 100 saniye olan bir aranan işlev gibi şeylere sahip olabilirsiniz. O kadar sezgisel değil ve pstats'ın sağladığı kadar kullanışlı değil. pstats, arayan / arayan istatistiğine daha anlamlı sayılar vermek için söz konusu işlevle ilgili bağlamsal bilgileri kullanır. Bunu kolayca görüntülenebilir yapan başka bir izleyicinin farkında değilsiniz.
Vultaire

14

Gprof2dot.py kullanıyorum. Sonuç şuna benzer . Bu komutları kullanıyorum:

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

Sen gerek Graphviz ve gprof2dot.py yüklü. Kullanışlı bir kabuk betiği isteyebilirsiniz .


Png yerine svg çıktısını alırsanız (nokta -Tsvg -o profile.svg ile) çıktı grafiğini tarayıcınızla arayabilir ve pürüzler olmadan resmi ölçekleyebilirsiniz.
razeh



4

Bu kişi, burada açıklanan bir grafik profil oluşturdu . Belki bunu kendi işin için bir başlangıç ​​noktası olarak kullanabilirsin.


1
Bu çok havalı, ancak görünüşe göre sadece C / C ++ için. Yine de python kullanıyor.
Rory

4

KCacheGrind, Mac OS X ve Windows üzerinde çalışan QCacheGrind adlı bir sürümü içerir .


Üstelik OP, Linux'taki KCachegrind için bağımlılıkları yanlış yorumluyor gibi görünüyor. Debian / Ubuntu / Mint'te ihtiyacınız apt-get install kcachegrindolan tek şey, sadece 3 KDE ile ilgili kitaplık kuran şeydir.
saaj

2
Ubuntu 17.04 kurulumunda @saaj, apt install kcachegrind~ 40 KDE kitaplığı dahil olmak üzere 102 paket kurmak istiyor.
Mark E. Haase

@mehaase Taze ubuntu:xenialolarak üç kat daha fazla olabilir, ancak bu bir geliştirme ortamı için ve bunu bir sorun olarak zar zor görüyorum. Ve aslında apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -lsadece 13 diyor.
saaj



1

Gprof2dot çıktısı üzerinde çalışan , tarayıcı tabanlı bir görselleştirme aracı olan profile_eye yazdım .

gprof2dot, birçok profil oluşturma aracı çıktısını seçmede harikadır ve grafik elemanı yerleştirmede harika bir iş çıkarır. Son işlem, genellikle çok karmaşık olan statik bir grafiktir.

D3.js kullanarak , odaklanmamış öğelerin göreceli olarak solması, araç ipuçları ve balık gözü çarpıtma yoluyla bu dağınıklığın çoğunu ortadan kaldırmak mümkündür .

Karşılaştırma için, bkz profile_eye en görselleştirme ait gprof2dot kullandığı kanonik örnek . Özellikle Python için bir cProfile çıktı örneğine bakın .



0

Plop kullandım ve çok hafif buldum. Mükemmele hızlı bir bakış sağlar.


vprof , flamegraph'ı da kullanan benzer bir araçtır, ancak aynı zamanda bellek profili oluşturabilir. Ne yazık ki, yalnızca kümülatif zamanı gösterir ve bir işlevde harcanan toplam süreyi göstermez.
goodmami
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.