讲解对象:【python3系列】timeit模块
作者:融水公子 rsgz
文章出处:360doc个人图书馆[其他平台均为盗版]
提醒:建议大家电脑浏览我的网页,因为手机浏览网页 代码会自动缩成一行,很不方便
对象:timeit
实质:是一个python模块
作用:提供了一种简单的方法来计算一小段 Python 代码的耗时
优点:避免了许多用于测量执行时间的常见陷阱
使用方式:
1 命令行方式
2 python接口方式
我们查看下timeit是不是一个内置模块
C:UsersAdministrator>python -c "import timeit"C:UsersAdministrator>
分析可以看出 的确是一个内置模块
实例1:
python -m timeit ""-".join(str(n) for n in range(100))"
分析:
1 这条命令主要python解释器调用timeit模块 去计算"-".join(str(n) for n in range(100))一句运行时间是多少
2 "-".join(str(n) for n in range(100))语句的作用就是遍历0-99的数字 并且字符串化 然后将字符串按照-进行分割 如果单独运行的话你会看到这个结果
C:UsersAdministrator>pythonPython 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> "-".join(str(n) for n in range(100))"0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-63-64-65-66-67-68-69-70-71-72-73-74-75-76-77-78-79-80-81-82-83-84-85-86-87-88-89-90-91-92-93-94-95-96-97-98-99">>>
我们windows cmd中运行一下这个命令,你是不是以为会运行成功?哈哈哈 那你就大错特错了
C:UsersAdministrator>python -m timeit ""-".join(str(n) for n in range(100))"Traceback (most recent call last): File "D:pythoninstalllibunpy.py", line 193, in _run_module_as_main return _run_code(code, main_globals, None, File "D:pythoninstalllibunpy.py", line 86, in _run_code exec(code, run_globals) File "D:pythoninstalllib imeit.py", line 374, insys.exit(main()) File "D:pythoninstalllib imeit.py", line 313, in main t = Timer(stmt, setup, timer) File "D:pythoninstalllib imeit.py", line 121, in __init__ compile(stmtprefix + stmt, dummy_src_name, "exec") File "", line 2 "-.join(str(n) ^SyntaxError: EOL while scanning string literal
分析:那么这个错误从哪里来的呢?我自认为我的语法没有任何错误 逻辑也是对的,并且交互式的也打印出来了 我也不认为是符号问题,后来还真是符号问题。我的符号特征是这样的
" " " "
" " " "
C:UsersAdministrator>python -m timeit ""-".join(str(n) for n in range(100))"10000 loops, best of 5: 24.5 usec per loop
现在 我们centos7中运行一下这个命令:(真烦 为了试验又要购买一台linux服务器,我临时购买的是centos7 centos8肯定有些语法改变了很多 我不是很适应 我就用centos7来演示吧)
我们将双引号放在里面试验一下 哇 可以哎
[root@guest ~]# python -m timeit ""-".join(str(n) for n in range(100))"10000 loops, best of 3: 17.5 usec per loop
我们将单引号放在里面试一下 哇 也可以
[root@guest ~]# python -m timeit ""-".join(str(n) for n in range(100))"100000 loops, best of 3: 16.9 usec per loop
总结:
1 在windows cmd中下面这种形式 在某些时候会报错
" " " "
2 centos7里面 下面两种形式 都是可以的
" " " "" " " "
谢谢大家的支持!可以点击我的头像,进入我的空间浏览更多文章呢
---