Использование ЦП со временем увеличивается - PullRequest
1 голос
/ 15 сентября 2011

У меня есть программа на Python, которая работает в течение многих дней.Использование памяти не сильно увеличивается, однако программа становится все медленнее и медленнее.Есть ли инструмент или утилита, которая перечислит все вызовы функций и сколько времени они потребуют для завершения?Что-то вроде гуппи / heapy , но для использования процессора.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Edit2

Я только что увидел, что на ваш фактический вопрос ответили как ' Как вы можете профилировать скрипт Python? '


Конечно, используйте profile.py.

import profile

def myfunction():
    bla bla bla

profile.run('myfunction()')

см. Также профилировщики и советы по производительности .

Edit: Выше приведен пример для одной функции. Вы можете профилировать и запускать свой скрипт из командной строки с помощью cProfile с помощью:

python -m cProfile myscript.py

Ваша программа / скрипт может также выглядеть следующим образом для профилирования всегда при запуске:

def myfunction():
    for i in range(100):
        print(i)

def myotherfunction():
    for i in range(200):
        print(i)

def main():
    """ main program to run over several days """
    for _ in range(3):
        myfunction()

    myotherfunction()

if __name__ == '__main__':
    profile.run('main()') # will execute your program
                          # and show profiling results afterwards
0 голосов
/ 15 сентября 2011

получить pid процесса

ps -ef | grep "имя процесса" | awk '{print $ 2}

и посмотрите, какие вызовы в программе занимают больше времени.

strace -c -p "pid"

вы можете даже запустить весь скрипт с помощью

strace -c script.file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...