CPU使用率随时间增加
我有一个Python程序,已经运行了很多天。虽然内存使用量并没有大幅增加,但程序却越来越慢。有没有什么工具可以列出所有的函数调用以及它们完成所需的时间?类似于guppy/heapy,但是是用来查看CPU使用情况的。
2 个回答
0
获取进程的PID(进程ID)
可以用这个命令:ps -ef | grep "进程名" | awk '{print $2}'
然后查看程序中哪些调用花费的时间比较长。
可以使用这个命令:strace -c -p "pid"
你甚至可以直接运行整个脚本,使用:
strace -c 脚本文件名
2
编辑2
我刚看到你的实际问题已经在这里得到了回答:'如何对Python脚本进行性能分析?'
没问题,可以使用profile.py。
import profile
def myfunction():
bla bla bla
profile.run('myfunction()')
编辑: 上面的例子是针对一个函数的。 你可以使用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