当前位置: 首页 > news >正文

time时间模块

time时间模块

目录

  • time时间模块
    • 1.概述
    • 2.查看不同类型的时钟
    • 3.墙上时钟time
      • 3.1.time()当前时间戳
      • 3.2.ctime()格式化时间
    • 4.单调时钟计算测量时间
    • 5.cpu处理器时钟时间
    • 6.性能计数器
    • 7.时间组成
    • 8.处理时区
    • 9.解析和格式化时间

1.概述

time模块允许访问多种类型的时钟,分别用于不同的用途。
标准系统调用time()会报告系统“墙上时钟”
monotonic()时钟可以用于测量一个长时间运行的进程的耗用时间,因为及时系统时间没有变,也能保证这个时间不会逆转。
perf_counter(()允许访问有最高可用分辨率的时钟,这使得短时间测量更准确

2.查看不同类型的时钟

使用get_clock_info()可以获得当前平台下实现的时钟信息。

import textwrap
import timeavailable_clocks = [('monotonic', time.monotonic),('perf_counter', time.perf_counter),('process_time', time.process_time),('time', time.time),
]for clock_name, func in available_clocks:print(textwrap.dedent('''\{name}:adjustable    : {info.adjustable}implementation: {info.implementation}monotonic     : {info.monotonic}resolution    : {info.resolution}current       : {current}''').format(name=clock_name,info=time.get_clock_info(clock_name),current=func()))

运行上面的代码分别查看不同类型时钟信息

monotonic:adjustable    : Falseimplementation: mach_absolute_time()monotonic     : Trueresolution    : 1e-09current       : 897155.360871048perf_counter:adjustable    : Falseimplementation: mach_absolute_time()monotonic     : Trueresolution    : 1e-09current       : 897155.36094208process_time:adjustable    : Falseimplementation: clock_gettime(CLOCK_PROCESS_CPUTIME_ID)monotonic     : Trueresolution    : 1.0000000000000002e-06current       : 0.037212time:adjustable    : Trueimplementation: clock_gettime(CLOCK_REALTIME)monotonic     : Falseresolution    : 1.0000000000000002e-06current       : 1675936487.1994529

3.墙上时钟time

time模块的核心函数之一就是time,他会把从“纪元”开始以来的秒数作为一个浮点值返回。纪元是时间测量的起始点,对于UNIX系统这个起始时间就是1970年1月1日0:00 尽管这个值总是一个浮点数,但具体的精度依赖于具体的平台。

3.1.time()当前时间戳

下面调用time()函数打印出当前时间戳

import timeprint('The time is:', time.time())

3.2.ctime()格式化时间

time()输出了当前时间的时间戳,对于人类而言可读性不好,使用ctime()获取格式化的时间。

import timeprint('The time is      :', time.ctime())
later = time.time() + 15
print('15 secs from now :', time.ctime(later))

运行上面代码

The time is      : Thu Feb  9 19:09:26 2023
15 secs from now : Thu Feb  9 19:09:41 2023

4.单调时钟计算测量时间

由于time()查看系统时钟,并且用户或系统服务可能改变时钟同步其他计算机时钟,所以反复调用time()所产生的值可能会前后浮动。
如果用来测量持续时间,可能会导致意向不到的行为。为了避免这种情况可以使用monotonic(),它总是返回向前的值。

单调时钟的起始点没有被定义,所以返回值只是在与其他时钟值完成计算时有用。
下面的例子使用monotonic()测量睡眠持续时间,

import timestart = time.monotonic()
time.sleep(0.1)
end = time.monotonic()
print('start : {:>9.2f}'.format(start))
print('end   : {:>9.2f}'.format(end))
print('span  : {:>9.2f}'.format(end - start))

运行代码,输出测量的时间。

start : 902018.64
end   : 902018.74
span  :      0.10

5.cpu处理器时钟时间

time()返回的是一个墙上时钟时间,而clock()返回处理器时钟时间。返回的值反应了程序运行时使用的实际时间。一般情况下,如果程序什么也没有做,处理器时钟不会改变。

import hashlib
import time# Data to use to calculate md5 checksums
data = open(__file__, 'rb').read()for i in range(5):h = hashlib.sha1()print(time.ctime(), ': {:0.3f} {:0.3f}'.format(time.time(), time.process_time()))for i in range(300000):h.update(data)cksum = h.digest()

运行上面的代码,输出cpu时钟时间

Thu Feb  9 19:27:35 2023 : 1675942055.033 0.043
Thu Feb  9 19:27:35 2023 : 1675942055.395 0.401
Thu Feb  9 19:27:35 2023 : 1675942055.768 0.766
Thu Feb  9 19:27:36 2023 : 1675942056.123 1.117
Thu Feb  9 19:27:36 2023 : 1675942056.472 1.463

下面这个例子中,循环几乎不做什么工作,每次迭代后都会睡眠。在应用睡眠时,time()值会增加,而clock()值不会增加。

import timetemplate = '{} - {:0.2f} - {:0.2f}'print(template.format(time.ctime(), time.time(), time.process_time())
)for i in range(3, 0, -1):print('Sleeping', i)time.sleep(i)print(template.format(time.ctime(), time.time(), time.process_time()))

运行上面的代码,进程sleep休眠时不会占用cpu资源,因此cpu的时间不会改变。

Thu Feb  9 19:40:18 2023 - 1675942818.83 - 2.36
Sleeping 3
Thu Feb  9 19:40:21 2023 - 1675942821.84 - 2.36
Sleeping 2
Thu Feb  9 19:40:23 2023 - 1675942823.84 - 2.36
Sleeping 1
Thu Feb  9 19:40:24 2023 - 1675942824.84 - 2.36

6.性能计数器

在测量性能时,高分辨率时钟是必不可少的。python通过perf_counter()提供精确计算。perf_counter()的纪元未定义,所以返回值只用于比较和计算值,而不作为绝对时间。

import hashlib
import time# Data to use to calculate md5 checksums
data = open(__file__, 'rb').read()loop_start = time.perf_counter()for i in range(5):iter_start = time.perf_counter()h = hashlib.sha1()for i in range(300000):h.update(data)cksum = h.digest()now = time.perf_counter()loop_elapsed = now - loop_startiter_elapsed = now - iter_startprint(time.ctime(), ': {:0.3f} {:0.3f}'.format(iter_elapsed, loop_elapsed))

运行结果

Thu Feb  9 19:49:34 2023 : 0.252 0.252
Thu Feb  9 19:49:35 2023 : 0.281 0.533
Thu Feb  9 19:49:35 2023 : 0.266 0.799
Thu Feb  9 19:49:35 2023 : 0.245 1.044
Thu Feb  9 19:49:35 2023 : 0.252 1.296

7.时间组成

有些情况需要访问一个日期的各个字段,例如年和月。time模块定义了struct_time来保存日期和时间,分解了各个部分便于访问。
gmtime()函数已UTC格式返回当前时间
localtime()将时区考虑在内了,转出的当前时区的时间
mktime()取一个struct_time实例,将它转换为浮点数

import timedef show_struct(s):print('  tm_year :', s.tm_year)print('  tm_mon  :', s.tm_mon)print('  tm_mday :', s.tm_mday)print('  tm_hour :', s.tm_hour)print('  tm_min  :', s.tm_min)print('  tm_sec  :', s.tm_sec)print('  tm_wday :', s.tm_wday)print('  tm_yday :', s.tm_yday)print('  tm_isdst:', s.tm_isdst)print('gmtime:')
show_struct(time.gmtime())
print('\nlocaltime:')
show_struct(time.localtime())
print('\nmktime:', time.mktime(time.localtime()))

运行结果中gmtime输出的时间是UTC时间,localtime输出的是当前时区的时间。

gmtime:tm_year : 2023tm_mon  : 2tm_mday : 9tm_hour : 12tm_min  : 6tm_sec  : 34tm_wday : 3tm_yday : 40tm_isdst: 0localtime:tm_year : 2023tm_mon  : 2tm_mday : 9tm_hour : 20tm_min  : 6tm_sec  : 34tm_wday : 3tm_yday : 40tm_isdst: 0mktime: 1675944394.0

8.处理时区

修改时区不会改变具体的时间,只会改变表示时间的方式。要改变时区,需要设置环境变量TZ,然后调用tzset()。设置时区可以指定很多细节,通常更容易的做法是使用时区名,由底层库推导出其他信息。

下面这个例子将时区修改为一些不同的值,展示这些改变对time模块中其他设置影响

import time
import osdef show_zone_info():print('  TZ    :', os.environ.get('TZ', '(not set)'))print('  tzname:', time.tzname)print('  Zone  : {} ({})'.format(time.timezone, (time.timezone / 3600)))print('  DST   :', time.daylight)print('  Time  :', time.ctime())print()print('Default :')
show_zone_info()ZONES = ['GMT','Europe/Amsterdam',
]for zone in ZONES:os.environ['TZ'] = zonetime.tzset()print(zone, ':')show_zone_info()

输出结果

Default :TZ    : (not set)tzname: ('CST', 'CST')Zone  : -28800 (-8.0)DST   : 0Time  : Thu Feb  9 20:24:08 2023GMT :TZ    : GMTtzname: ('GMT', 'GMT')Zone  : 0 (0.0)DST   : 0Time  : Thu Feb  9 12:24:08 2023Europe/Amsterdam :TZ    : Europe/Amsterdamtzname: ('CET', 'CEST')Zone  : -3600 (-1.0)DST   : 1Time  : Thu Feb  9 13:24:08 2023

9.解析和格式化时间

strftime() 和 strptime()的功能正好相反, 实现字符串和时间元组的相互转换。

  • strptime()中的p指的是parse, 意思是解析, 一般解析都是说对字符串进行解析, 所以strptime()方法的作用是将字符串解析为时间元组

  • strftime()中的f指的是format, 意思是格式化, 也就是处理成适合人看的格式, 所以strftime()方法的作用是将时间元组格式化为字符串

import timedef show_struct(s):print('  tm_year :', s.tm_year)print('  tm_mon  :', s.tm_mon)print('  tm_mday :', s.tm_mday)print('  tm_hour :', s.tm_hour)print('  tm_min  :', s.tm_min)print('  tm_sec  :', s.tm_sec)print('  tm_wday :', s.tm_wday)print('  tm_yday :', s.tm_yday)print('  tm_isdst:', s.tm_isdst)now = time.ctime(1483391847.433716)
print('Now:', now)parsed = time.strptime(now)
print('\nParsed:')
show_struct(parsed)print('\nFormatted:',time.strftime("%a %b %d %H:%M:%S %Y", parsed))

运行结果

Now: Tue Jan  3 05:17:27 2017Parsed:tm_year : 2017tm_mon  : 1tm_mday : 3tm_hour : 5tm_min  : 17tm_sec  : 27tm_wday : 1tm_yday : 3tm_isdst: -1Formatted: Tue Jan 03 05:17:27 2017

相关文章:

time时间模块

time时间模块 目录time时间模块1.概述2.查看不同类型的时钟3.墙上时钟time3.1.time()当前时间戳3.2.ctime()格式化时间4.单调时钟计算测量时间5.cpu处理器时钟时间6.性能计数器7.时间组成8.处理时区9.解析和格式化时间1.概述 time模块允许访问多种类型的时钟,分别用…...

如何判断反馈电路的类型-反馈类型-三极管

如何判断反馈电路的类型 反馈电路类型很多,可根据不同的标准分类: ①根据反馈的极性分:有正反馈和负反馈。 ②根据反馈信号和输出信号的关系分:有电压反馈和电流反馈。 ③根据反馈信号和输入信号的关系分:有串联反…...

C++ 实现生命游戏 Live Game

#include"stdlib.h" #include"time.h" #include"unistd.h" using namespace std; #define XSIZE 80 #define YSIZE 30 #include"iostream" using namespace std ; // 初始化生命 void initLive(int a[YSIZE][XSIZE]) { // …...

什么是QoS?QoS是如何工作的?QoS的实验配置如何进行?

QoS(Quality of Service)是服务质量的简称。对于网络业务来说,服务质量包括哪些方面呢? 从传统意义上来讲,无非就是传输的带宽、传送的时延、数据的丢包率等,而提高服务质量无非也就是保证传输的带宽&…...

AcWing 840. 模拟散列表

题目描述 餐前小菜: 在讨论本题目之前先看一个简单的问题:给出 NNN 个正整数 (a1,a2,...,an)(a_1,a_2,...,a_n)(a1​,a2​,...,an​),再给出 MMM 个正整数 (x1,x2,...,xm)(x_1,x_2,...,x_m)(x1​,x2​,...,xm​),问这 MMM 个数中…...

【网络工程】常见HTTP响应状态码

前言 什么是HTTP响应状态码? HTTP状态码(HTTP Status Code)是表示网页服务器超文本传输协议响应状态的3位数字代码 HTTP响应码被分为五大类 信息响应(100~199)成功响应(200~299)重定向响应&am…...

Python之ruamel.yaml模块详解(二)

Python之ruamel.yaml模块详解(二)4 将YAML解析为Python对象并修改5 使用旧API将YAML解析为Python对象并修改6 使用[]和.get()访问合并的键:7 使用insert()方法插入内容8 使用yaml.indent()更改默认缩进9 使用yaml.compact()隔行显示10 同一数…...

若依框架 --- 偶发的el-select无法选择的问题

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…...

【Linux】tmpfile 使用介绍

tmpfile 使用介绍 1 介绍 很多情况下,需要系统自动识别/tmp、/var/tmp下的临时目录,并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。 网上很多博客使用tmpwatchcron的方法来管理临时文件和临时存放文件的目录,在后期的版本…...

实现光线追踪重投影的方法

光线追踪重投影方法 重投影这项技术一般用于时间性帧复用技术上,例如TAA(Temporal Anti-Aliasing)反走样或者抗锯齿技术。读这篇文章最好先对TAA这类技术的算法流程有了解。 1.TAA抗锯齿技术简介 先简单介绍下TAA抗锯齿的原理,在游戏中,当前…...

Hyperbolic Representation Learning for CV

Contents Hyperbolic geometry[CVPR 2020] Hyperbolic visual embedding learning for zero-shot recognitionIntroductionApproachHyperbolic Label Embedding LearningHyperbolic Image Embedding LearningExperiment[CVPR 2020] Hyperbolic Image EmbeddingsIntroduction...

In Context Learning 相关分享

个人知乎详见 https://zhuanlan.zhihu.com/p/603650082/edit 1. 前言 随着大模型(GPT3,Instruction GPT,ChatGPT)的横空出世,如何更高效地提示大模型也成了学术界与工业界的关注,因此In-context learning…...

【前端笔试题一】:解析url路径中的query参数

前言 本文记录下在笔试过程中的前端笔试编程题目,会持续更新 1. 题目: 解析 url 路径中的 query 参数,比如:‘http://building/#/skeleton?serialNumber2023020818332821073&jobNo210347&target%7B%22a%22%3A%22b%22%2C…...

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC火光火焰模块1.2、STM32F103C8T6火光火焰模块五、基础知识学习与相…...

Java基础42 枚举与注解

枚举与注解一、枚举(enumeration)1.1 自定义类实现枚举1.2 enum关键字实现枚举1.2.1 enum的注意事项1.2.2 enum的使用练习1.2.3 enum的常用方法1.2.4 enum的使用细节及注意事项1.2.5 enum练习二、注解(Annotation)2.1 Override&am…...

shell的变量和引用

文章目录二、变量和引用2.1 什么是变量2.2变量的命名2.3 变量的类型2.3.1 根据数据类型分类2.3.2 根据作用域分类2.4 变量的定义2.5 shell中的引用2.6 变量的运算练习:二、变量和引用 在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shel…...

基于PHP的招聘网站

摘要在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括在线招聘的网络应用,在外国在线招聘已经是很普遍的方式,不过国内的在线招聘可能还处于起步阶段。招聘网站具有招聘信息功能的双向选择,…...

轻松使用 Python 检测和识别车牌(附代码)

车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为…...

DVWA—CSRF-Medium跨站请求伪造中级

注意: 1、这里对XSS(Stored)关卡不熟悉的可以从这里去看http://t.csdn.cn/ggQDK 2、把难度设置成 Medium 一、这一关同样我们需要埋下伏笔,诱使用户点击来提交,首先从XSS(Stored)入手。 注意:在前面介绍…...

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…...

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 ,您的企业还没使用在线软件工具吗?自从用了在线工具之后,感觉打开了新办公世界的大门,效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说,在线实在是太棒了!今天安利几个非常不错的在线软件工…...

面试(七)为什么一般希望将析构函数定义为虚函数

class B { public:~B() // 基类析构函数不为虚函数{cout << "B::~B()" << endl;} };class D : public B { public:~D(){cout << "D::~D()" << endl;} };void Test(B* t) {delete t;t nullptr; }int main() {B *pb new B;Test…...

MySQL必会四大函数-时间函数

一、时间日期获取函数 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() mysql> select curdate(); 2023-02-09 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() select curtime(); 08:49:27 获取当前时间戳&#xff08;date &…...

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…...

mathtype7与word冲突,无法安装,不显示工具栏的问题解决

首先无法安装&#xff0c;或安装出错时&#xff0c;要清理注册表防止以后再次出现该问题&#xff0c;以此记录留作备份。打开注册表的方法是键盘winr键同时按&#xff08;win就是Alt旁边像窗户图标的键&#xff09;&#xff0c;正常的话会跳出一个叫“运行”的家伙&#xff0c;…...

IBM AIX 升级Openssh 实现篇(编译安装)

升级成功佐证 !!!本文所有内容仅作参考,请在测试环境中具体测试完毕后才能应用于生产环境!!! [1]备份和恢复方案 开启telnet 服务,防止ssh 掉线后无法重连维护。在修复漏洞后关闭telnet。 备份该服务相关的所有文件,以便恢复。 root@TEST:/etc# vi inetd.conf #ftp…...

linux的睡眠框架及实现

睡眠 4 种模式&#xff1a;S2I (Suspend-to-Idle)&#xff1a; 挂起系统&#xff0c;IO进入低功耗模式。需配置CONFIG_SUSPEND。Standby&#xff1a;执行S2I后&#xff0c;把AP (nonboot CPU) 离线。除了CONFIG_SUSPEND的支持外&#xff0c;还需要向suspend子系统注册&#xff…...

Java面试知识点

工作也有好些年了&#xff0c;从刚毕业到前几年看过无数的面试题&#xff0c;总想着自己写一个面试总结&#xff0c;随着自我认识的变化&#xff0c;一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过&#xff0c;但是答案不尽相同&#xff0c;如…...

PTA Advanced 1159 Structure of a Binary Tree C++

目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 思路 代码 题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, a binary tree can be un…...

CDN绕过技术总汇

注 本文首发于合天网安实验室 首发链接&#xff1a;https://mp.weixin.qq.com/s/9oeUpFUZ_0FUu6YAhQGuAg 近日HVV培训以及面试&#xff0c;有人问了CDN该如何绕过找到目标真实IP&#xff0c;这向来是个老生常谈的问题&#xff0c;而且网上大多都有&#xff0c;但是有些不够全面…...

wordpress模板首页是哪个文件夹/搜索网站大全排名

当你遇到累进税率&#xff0c;你知道怎么算税额吗&#xff1f;刚刚学习税务的时候&#xff0c;小编对于这四个汉字一点都不陌生&#xff0c;但是这四个汉字这样的组合&#xff0c;看得一头雾水&#xff0c;累觉不爱。后来才知道在我国税收中&#xff0c;以累进税率计算税额是很…...

做网站要排版吗/seo入口

内容主要来自《python科学计算》一书 双摆 初始角度为θ1\theta_1θ1​与θ2\theta_2θ2​&#xff0c;无质量杆长L1L_1L1​与L2L_2L2​&#xff0c;小球质量m1m_1m1​与m2m_2m2​ 拉格朗日力学求解 建立坐标系 设小球的坐标为(x1,y1)(x_1,y_1)(x1​,y1​)与(x2,y2)(x_2,…...

有网站代码怎么做网站/如何提高网站的搜索排名

Android自带Music播放器更新播放时间和进度条的代码在packages/appsMusic/MediaPlaybackActivity.java文件中。 源码参考&#xff1a;http://www.oschina.net/code/explore/android-2.2-froyo/com/android/music/MediaPlaybackActivity.java 1.在onStart()函数中&#xff0c…...

国内用python做的网站/百度推广一条资源多少钱

jQuery 插件jQuery虽然功能强大&#xff0c;但也不是包含所有的功能&#xff0c;可以通过插件来扩展它的功能&#xff1a; 当你需要某个插件的时候&#xff0c;你可以“安装”到jQuery上面&#xff0c;然后使用。 当你不再需要这个插件&#xff0c;那你就可以从jQuery上“卸载”…...

wordpress 加入js/seo免费课程视频

此博文通过MATLAB APP Design实现对学生成绩的处理,具体的功能包括读取表格数据、添加学生数据、计算总成绩、成绩排序+以及表格的保存。 一、APP 界面设计展示 1. 在画布中拖入面板、表格和四个按钮,布局如下。将面板的title写为“学生成绩计算器”并居中,将四个按钮的t…...

网站自助建设推广/网店推广方案策划书

基于H5的App在IOS App Store的打包发布流程0、说明1、ios证书配置&#xff08;1&#xff09;创建CSR文件&#xff08;2&#xff09;申请开发者证书&#xff08;3&#xff09;申请推送证书&#xff08;4&#xff09;申请provisioning profile2、打包&#xff08;1&#xff09;We…...