python性能分析(一) | timeit模块_【python3系列】timeit模块

讲解对象:【python3系列】timeit模块

作者:融水公子 rsgz

文章出处:360doc个人图书馆[其他平台均为盗版]

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

对象:timeit

实质:是一个python模块

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

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

使用方式:

1 命令行方式

2 python接口方式

我们查看下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>python

Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32

Type "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里面 下面两种形式 都是可以的' " " '

" ' ' "

谢谢大家的支持!可以点击我的头像,进入我的空间浏览更多文章呢

---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值