我有一个运行了很多天的python程序。内存使用量不会增加太多,但程序变得越来越慢。是否有工具或实用程序列出所有函数调用以及完成所需的时间?像guppy/heapy这样的东西,但用于CPU使用。
答案 0 :(得分:2)
EDIT2
我刚刚看到您的实际问题已在'How can you profile a Python script?'
中得到解答当然,请使用profile.py。
import profile
def myfunction():
bla bla bla
profile.run('myfunction()')
另请参阅profilers和tips on performance。
修改: 以上示例适用于一个功能。 您可以使用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
答案 1 :(得分:0)
获取流程的pid
ps -ef | grep“processname”| awk'{print $ 2}
然后看看程序中的哪些调用花费了更多时间。
strace -c -p“pid”
您甚至可以使用
运行整个脚本strace -c script.file