Python3.7中time模块的time方法、perf_counter方法和process_time方法的区别

  • 1. time.time()方法
  • 2. time.perf_counter()方法
  • 3. time.process_time()方法
  • 4. 三者比较
  • 5 测试代码
  • 6 写在最后

1. time.time()方法

返回自纪元以来的秒数作为浮点数,但是时期的具体日期和闰秒的处理取决于使用的平台。比如:在Windows和大多数Unix系统上,纪元是1970年1月1日00:00:00(UTC),并且闰秒不计入自纪元以来的秒数,这也通常被称为Unix时间。我们要可以通过gmtime(0)查看自己平台上的纪元。
注意,即使时间总是作为浮点数返回,但并非所有系统都提供的精度高于1秒,而且更改系统的时间会影响time()的值。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。
time()返回的数字可以转换为更常见的时间格式(即年,月,日,小时等),方法是将其传递给gmtime()函数或在本地时间传递给本地时间( )功能。在这两种情况下都返回struct_time对象,可以从该对象作为属性访问日历日期的组件。
所以我们通常用time()来做时间的格式输出,也会用在一些测试代码时间上面。在我们测试代码的时候需要调用两次,做差值,注意它会把sleep()的时间也算进去。(具体场景有知道的小伙伴欢迎留言分享)

2. time.perf_counter()方法

返回性能计数器的值(以小数秒为单位)作为浮点数,即具有最高可用分辨率的时钟,以测量短持续时间。 它确实包括睡眠期间经过的时间,并且是系统范围的。
通常perf_counter()用在测试代码时间上,具有最高的可用分辨率。不过因为返回值的参考点未定义,因此我们测试代码的时候需要调用两次,做差值。
perf_counter()会包含sleep()休眠时间,适用测量短持续时间

3. time.process_time()方法

返回当前进程的系统和用户CPU时间总和的值(以小数秒为单位)作为浮点数。
通常time.process_time()也用在测试代码时间上,根据定义,它在整个过程中。返回值的参考点未定义,因此我们测试代码的时候需要调用两次,做差值。
注意process_time()不包括sleep()休眠时间期间经过的时间

4. 三者比较

  1. 除了time模块,Python还提供了timeit模块。timeit模块提供了一种简单的方法来计算一小段Python代码,比如一些循环或者正则匹配。 timeit既有命令行界面,也有可调用界面。 避免了许多用于测量执行时间的常见陷阱。可以用于基准测试/分析目的的代码块。
    具体的用法:更多用法可以查看timeit官方文档
import timeit
t = timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
print(t)
  1. time()精度上相对没有那么高,而且受系统的影响,适合表示日期时间或者大程序程序的计时。
  2. perf_counter()适合小一点的程序测试,会计算sleep()时间
  3. process_counter()适合小一点的程序测试,不会计算sleep()时间
    此外Python3.7开始还提供了以上三个方法精确到纳秒的计时。分别是:
    time.perf_counter_ns()
    time.process_time_ns()
    time.time_ns()
    注意这三个精确到纳秒的方法返回的是整数类型。
  4. 以前还有一个clock()方法,尽管现在这个方法还能用,但是这个方法在Python3.8中会被废除掉了,所以这里就不过多介绍。

5 测试代码

import timeprint('我是time()方法:{}'.format(time.time()))
print('我是perf_counter()方法:{}'.format(time.perf_counter()))
print('我是process_time()方法:{}'.format(time.process_time()))
t0 = time.time()
c0 = time.perf_counter()
p0 = time.process_time()
r = 0
for i in range(10000000):r += i
time.sleep(2)
print(r)
t1 = time.time()
c1 = time.perf_counter()
p1 = time.process_time()
spend1 = t1 - t0
spend2 = c1 - c0
spend3 = p1 - p0
print("time()方法用时:{}s".format(spend1))
print("perf_counter()用时:{}s".format(spend2))
print("process_time()用时:{}s".format(spend3))
print("测试完毕")

6 写在最后

因为博主目前技术水平和接触有限,看了部分源代码,也还是有很多地方还不是很明白,文中有说的不对,或者小伙伴们谁比较清楚的,欢迎留言交流。
最后附上Python3.7time模块的官方文档和源码地址:
time模块官方文档
time模块的源代码

后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技,扫描下方二维码或者搜索每日学一技关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!

Python3.7中time模块的time()、perf_counter()和process_time()的区别相关推荐

  1. python3 zipfile_python3中zipfile模块的常用方法

    一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...

  2. python3.5怎么使用-Python3.5中NumPy模块的使用图文教程

    Python3.5基础之NumPy模块的使用图文与实例详解 本文实例讲述了Python3.5基础之NumPy模块的使用.分享给大家供大家参考,具体如下: 1.简介 2.多维数组--ndarray #! ...

  3. python中模块是什么意思_Python中的模块是什么?3分钟搞懂Python中的模块问题

    Python 中的模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配到一个模块里能 ...

  4. python3 random函数_Python3 中 random模块

    Python3 中 random模块 Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() 用于生成一个0到1的 随机浮点数:0& ...

  5. pythonurllib模块-Python3中核心模块urllib的用法大全

    Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP.FTP和Gopher,同时也支持对本地文件的访问.在Python3中,urllib.urlparse.urlli ...

  6. Python3中pickle模块介绍

          Pyhton3中的pickle模块用于对Python对象结构的二进制进行序列化(或pickling)和反序列化(或unpickling)."pickling"是将Pyt ...

  7. python3中argparse模块详解

    文章目录 python3中argparse模块详解 一. 命令行参数分为位置参数和选项参数: 二. 使用步骤: 三. add_argument()方法参数: 1. name or flags: 2. ...

  8. Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历))

    Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历)) 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog. ...

  9. 在Python3.4中实现opencv3.1.0的安装配置

    写本篇之前查了好多文章,但是由于python基本都是基于2.7.opencv都是基于2.x的,所以许多方法并不适用,以致于浪费了两三个小时.这里对python3.x中怎样使用opencv3.x进行了总 ...

最新文章

  1. WPF:从WPF Diagram Designer Part 4学习分组、对齐、排序、序列化和常用功能
  2. 你如何摆平秋季问题皮肤
  3. 系统在iis6上部署
  4. 击败酷睿i9之后,有人又拿苹果M1去挑战英伟达V100了
  5. [PyTorch] 损失函数
  6. python工资一般多少-Python工程师工资多少
  7. Android高级模糊技术
  8. 无盘工作站与VMware View虚拟桌面对比
  9. c语言scanf用法例子,scanf(scanf用法举例)
  10. 举几个单例模式的例子——茴香豆的茴字有几种写法?
  11. PQ分区魔术师v9.0 中文版
  12. v-if报undefined
  13. 岁月温柔-13 妈妈担心回到山村里的大姨冻着
  14. 从零开始手写VIO第三章作业(含关键点细节及思维过程)
  15. 简单句、并列句、复合句、got his wish、 owe you
  16. 7-29 二分法求多项式单根 (20 分)
  17. Mastercam 2017 图形阵列(矩形阵列与环形阵列)
  18. 【2023秋招面经】深信服 前端 一面(1h)
  19. RYU+mininet——RYU
  20. 【转载】如何用Python发送Email邮件?

热门文章

  1. IOS疯狂基础之MessageUI—短信
  2. MC音乐网免费解析下载工具
  3. WebService之Axis2 Log4j 2.x 漏洞升级教程
  4. socks5 搭建代理服务
  5. APSIM练习:播种作物练—高粱作物模拟
  6. python判断质数_使用Python语言判断质数(素数)的简单方法讲解
  7. qq好友列表获取之动态爬虫清洗爬取好友列表数据 - 获取qq好友、群、群成员列表
  8. PHP slideup,jQuery 的 slideUp 和 slideDown实现 展开和收缩效果
  9. 右键点击DataGridView的行时,将选中行改为点击的行
  10. plt.xscale、plt.yscale将 x轴 和 y轴 的比例设置为对数比例