CPU使用率随时间增加

1 投票
2 回答
1569 浏览
提问于 2025-04-17 02:23

我有一个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

撰写回答