Используя cProfile заканчивается с KCacheGrind

Можно установить ссылку на Сценарии. Библиотека времени выполнения и затем использует FileSystemObject. Это имеет метод DeleteFile и метод FileExists.

См. статью MSDN здесь .

53
задан Adam Luchjenbroers 13 December 2009 в 00:07
поделиться

4 ответа

Это можно сделать с помощью внешнего модуля под названием lscallproftree

В этой статье объясняется, как: CherryPy - CacheGrind

С моим результирующим кодом, который выглядит так:

...
if profile:
    import cProfile
    import lsprofcalltree

    profileFileName = 'Profiles/pythonray_' + time.strftime('%Y%m%d_%H%M%S') + '.profile'

    profile = cProfile.Profile()
    profile.run('pilImage = camera.render(scene, samplePattern)')

    kProfile = lsprofcalltree.KCacheGrind(profile)

    kFile = open (profileFileName, 'w+')
    kProfile.output(kFile)
    kFile.close()

    profile.print_stats()    
else:            
    pilImage = camera.render(scene, samplePattern)
...

Если кто-то знает способ сделать это, не требующий внешнего (т.е. не поставляемого с Python) модуля, мне все равно было бы очень интересно узнать об этом.

7
ответ дан 7 November 2019 в 08:29
поделиться

If what you're actually trying to do is see what parts of your code could be optimized for speed, and you can randomly pause it in the debugger, this method works. It may be surprising, but you don't need very many stackshots.

6
ответ дан 7 November 2019 в 08:29
поделиться

Вы можете использовать декоратор profilestats.profile ( $ pip install profilestats ) - простую оболочку для модуль pyprof2calltree (ребрендинг lsprofcalltree.py ):

from profilestats import profile

@profile
def func():
    # do something here

Скрипт можно запустить как обычно. profilestats создает два файла: cachegrind.out.profilestats и profilestats.prof в форматах, совместимых с KCachegrind и cProfile, соответственно.

17
ответ дан 7 November 2019 в 08:29
поделиться

С помощью cProfile вы также можете профилировать существующие программы, не создавая отдельный скрипт профилирования. Просто запустите программу с профилировщиком

python -m cProfile -o profile_data.pyprof script_to_profile.py

и откройте данные профиля в kcachegrind с помощью pyprof2calltree, чей переключатель -k автоматически открывает данные в kcachegrind

pyprof2calltree -i profile_data.pyprof -k

. Например, профилирование всего сервера пастера и веб-приложения будет выполнено следующим образом

python -m cProfile -o pyprof.out `which paster` serve development.ini

pyprof2calltree может быть установлен с помощью easy_install.

90
ответ дан 7 November 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: