SORU
24 ŞUBAT 2009, Salı


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
24 ŞUBAT 2009, Salı


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/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CareyHolzman

    CareyHolzman

    24 Ocak 2008
  • cyriak

    cyriak

    29 Mart 2006
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008