做学校网站素材图片大全,可以做百度百科参考资料的网站,2022年可以打开的网址,男科医院咨询免费当我们写完一个脚本或一个函数#xff0c;首先能保证得到正确结果#xff0c;其次尽可能的快#xff08;虽然会说Py慢#xff0c;但有的项目就是得要基于Py开发#xff09;
本期将总结几种获取程序运行时间的方法#xff0c;极大的帮助对比不同算法/写法效率
插播…当我们写完一个脚本或一个函数首先能保证得到正确结果其次尽可能的快虽然会说Py慢但有的项目就是得要基于Py开发
本期将总结几种获取程序运行时间的方法极大的帮助对比不同算法/写法效率
插播更多文字总结·指南·实用工具·科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】
使用系统命令
每个操作系统都有自己的方法来算程序运行的时间比如在Windows PowerShell中可以用 Measure-Command 来看一个Python文件的运行时间
Measure-Command {python tutorial.py}在Ubuntu中使用time命令
time python tutorial.py如果我们除了看整个 Python 脚本的运行时间外还想看看局部运行时间咋整
使用 IPython 的 Magic Command
如果你使用过如Jupyter Notebook等工具他们用到了一个叫做 IPython 的交互式 Python 环境
在 IPython 中有一个特别方便的命令叫做 timeit
对于某行代码的测量可以使用%timeit 对于某一个代码单元格的测量可以使用%%timeit
使用timeit
如果不用IPython咋整没关系已经很厉害了Python 有一个内置的timeit模块可以帮助检测小段代码运行时间
可以在命令行界面运行如下命令
python -m timeit [i for i in range(100)]使用 timeit 测量执行此列表推导式所需的时间得到输出
200000 loops, best of 5: 1.4 usec per loop此输出表明每次计时将执行200000次列表推导共计时测试了5次最好的结果是1.4毫秒
或者直接在Python中调用
import timeitprint(timeit.timeit([i for i in range(100)], number1))对于更复杂的情况有三个参数需要考虑
stmt待测量的代码片段默认是 passsetup在运行 stmt 之前执行一些准备工作默认也是 passnumber要运行 stmt 的次数
比如一个更复杂的例子
import timeit# prerequisites before running the stmt
my_setup from math import sqrt# code snippet we would like to measure
my_code
def my_function():for x in range(10000000):sqrt(x)
print(timeit.timeit(setupmy_setup,stmtmy_code,number1000))
# 6.260000000000293e-05使用time模块
Python中内置的time模块相信都不陌生基本的用法是在待测代码段的起始与末尾分别打上时间戳然后获得时间差
import timedef my_function():for i in range(10000000):pass
start time.perf_counter()
my_function()
print(time.perf_counter()-start)
# 0.1179838我经常使用time.perf_counter()来获取时间更精确在之前的教程中有提过
time模块中还有一些其他计时选择
time.timer()获取当前时间time.perf_counter()计算程序的执行时间高分辨率time.monotonic()计算程序的执行时间低分辨率time.process_time()计算某个进程的CPU时间time.thread_time()计算线程的CPU时间
假如我们需要在多个代码段测试运行时间每个首尾都打上时间戳再计算时间差就有点繁琐了咋整上装饰器
import timedef log_execution_time(func):def wrapper(*args, **kwargs):start time.perf_counter()res func(*args, **kwargs)end time.perf_counter()print(fThe execution of {func.__name__} used {end - start} seconds.)return resreturn wrapperlog_execution_time
def my_function():for i in range(10000000):passmy_function()
# The execution of my_function used 0.1156899 seconds.如上例所示这样就使得代码肥肠干净与整洁
以上就是本期全部内容期待点赞在看我是啥都生下次再见