Nasıl bir Python betiği profilini çıkarabilir misiniz?
Project Euler ve diğer kodlama yarışmaları sık sık ya da insanların kendi özel çözüm ishal nasıl iftihar çalıştırmak için maksimum bir süre var. Python ile, bazen yaklaşımlardan biraz kludgey - yani, __main__
zamanlama kodu ekliyoruz.
Python bir programı çalıştırmak için gereken ne kadar profil için iyi bir yolu nedir?
CEVAP
Python bir profiler cProfile denilen içerir. Bu sadece toplam zaman, ama aynı zamanda her ayrı işlevi ve her bir fonksiyonu olduğunu anlatır kez çalışan, kolay iyileştirmeleri yapmak gerekir yeri belirlemek için yapım sağlar.
Bu gibi: yorumlayıcı kodu içinde, ya da arayabilirsin
import cProfile
cProfile.run('foo()')
Daha faydalı bir komut çalıştırırken cProfile çağırabilirsiniz:
python -m cProfile myscript.py
Daha da kolaylaştırmak için, küçük bir toplu iş dosyası yaptım 'adlı profili.': . bat
python -m cProfile %1
Yani yapmam gereken tek şey:
profile euler048.py
Ve bu olsun:
1007 function calls in 0.061 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.061 0.061 <string>:1(<module>)
1000 0.051 0.000 0.051 0.000 euler048.py:2(<lambda>)
1 0.005 0.005 0.061 0.061 euler048.py:2(<module>)
1 0.000 0.000 0.061 0.061 {execfile}
1 0.002 0.002 0.053 0.053 {map}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler objects}
1 0.000 0.000 0.000 0.000 {range}
1 0.003 0.003 0.003 0.003 {sum}
EDİT: PyCon 2013 iyi bir video kaynağı için Güncellendi link: http://lanyrd.com/2013/pycon/scdywg/
Windows bir hizmet olarak bir Python b...
Nasıl Python betiği tek başına HERHANG...
Nasıl Python BAŞ bir HTTP isteği gönde...
Nasıl Python betiği çıkış penceresi aç...
Nasıl bir python betiği bir hizmet ya ...