📅  最后修改于: 2023-12-03 15:23:48.938000             🧑  作者: Mango
有时候在编写程序的时候,我们需要知道一个进程的执行时间,以便于我们优化程序或者进行其他操作。Python 为我们提供了一些帮助来估计一个进程的执行时间。
Python 内置的 time
模块提供了一些函数来帮助我们估计进程的时间消耗。其中比较常用的有 time.time()
和 time.process_time()
函数。
time.time()
time.time()
函数返回从计算机的“时钟起点”到当前时间所经过的秒数。我们可以在进程的起始和结束时调用它来计算进程的总时间消耗。
代码示例:
import time
start_time = time.time()
# 进行代码操作
end_time = time.time()
total_time = end_time - start_time
print("Process time: {} seconds".format(total_time))
time.process_time()
time.process_time()
函数返回当前进程所消耗的 CPU 时间。这里的时间指的是 CPU 实际执行指令的时间,而不是等待 I/O 操作或者其他阻塞操作所浪费的时间。这个函数可以帮助我们评估一个进程的计算能力。
代码示例:
import time
start_time = time.process_time()
# 进行代码操作
end_time = time.process_time()
total_time = end_time - start_time
print("Process CPU time: {} seconds".format(total_time))
time
模块提供的函数需要我们自己手动计时,并且有可能会受到计算机其它进程的干扰。Python 还提供了 timeit
模块,它专门用于测试代码的运行时间,并且会多次执行以获得更精确的结果。
import timeit
def test():
# 进行代码操作
pass
t = timeit.timeit('test()', setup='from __main__ import test', number=100)
print("Process time: {} seconds".format(t))
在上面的代码中,timeit.timeit()
函数指定了要执行的操作和运行次数。setup
参数用于设置执行前需要导入的模块或者函数,这里设置为从当前脚本导入 test
函数。最后打印出来的是执行 test()
函数 100 次所需的时间。
cProfile
模块是 Python 的内置模块,它提供了在函数级别上对 Python 代码进行性能分析的支持。我们可以使用它来定位程序中运行缓慢的地方。
import cProfile
def test():
# 进行代码操作
pass
cProfile.run('test()')
在上面的代码中,我们用 cProfile.run()
函数来运行 test()
函数并分析它的性能。关于 cProfile
模块的更多详细介绍可以参考 Python 官网文档。
Python 内置的 time
、timeit
和 cProfile
模块可以帮助我们估计一个进程的时间消耗,从而调优和优化程序。同时,也可以帮助我们定位程序中运行缓慢的地方以及评估进程的计算能力。