python3系列: timeit模块

转载自品略图书馆 http://www.pinlue.com/article/2020/04/0516/0910108987409.html

提醒:建议大家电脑浏览我的网页,因为手机浏览网页 代码会自动缩成一行,很不方便

对象:timeit

实质:是一个python模块

作用:提供了一种简单的方法来计算一小段 Python 代码的耗时

优点:避免了许多用于测量执行时间的常见陷阱

使用方式:

1 命令行方式

2python接口方式

我们查看下timeit是不是一个内置模块

C:\Users\Administrator>python -c "import timeit"C:\Users\Administrator>

分析可以看出 的确是一个内置模块

实例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:\Users\Administrator>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:\Users\Administrator>python -m timeit '"-".join(str(n) for n in range(100))'Traceback (most recent call last): File "D:\python\install\lib\runpy.py", line 193, in _run_module_as_main return _run_code(code, main_globals, None, File "D:\python\install\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "D:\python\install\lib\timeit.py", line 374, insys.exit(main()) File "D:\python\install\lib\timeit.py", line 313, in main t = Timer(stmt, setup, timer) File "D:\python\install\lib\timeit.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:\Users\Administrator>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里面 下面两种形式 都是可以的

' " " '" ' ' "

谢谢大家的支持!

发布了60 篇原创文章 · 获赞 58 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/yihuliunian/article/details/105329111
今日推荐