Python 小技巧:计时函数

python小技巧:[GUI项目]:Tkinter 创建秒表 在python中使用Tkinter创建秒表,Tkinter是Python的标准GUI库。 Python与Tkinter相结合,提供了一种创建GUI应用程序的快速、简便的方法。 Tkinter为TKGUI工具包提供了一个强大的面向对象的界面。很容易开始使用Tkinter。 # Python program to create a # a new window using Tkinter # importing the required libraires import tkinter # cre.. 阅读详情

思考

它接收开始和结束时间,返回格式为"天:小时:分钟:秒:毫秒"的字符串。

V 1.0

from datetime import datetime

def format_timedelta(start_time, end_time):
    """
    计算两个datetime对象之间的时间差,并格式化为天:小时:分钟:秒:毫秒
    
    Args:
        start_time (datetime): 开始时间
        end_time (datetime): 结束时间
    
    Returns:
        str: 格式为"天:小时:分钟:秒:毫秒"的字符串
    """
    # 计算时间差
    delta = end_time - start_time
    
    # 提取天、秒和微秒
    days = delta.days
    seconds = delta.seconds
    microseconds = delta.microseconds
    
    # 计算小时、分钟和秒
    hours = seconds // 3600
    minutes = (seconds % 3600) // 60
    seconds = seconds % 60
    milliseconds = microseconds // 1000  # 将微秒转换为毫秒
    
    # 格式化为字符串,确保两位数显示
    return f"{days}:{hours:02d}:{minutes:02d}:{seconds:02d}:{milliseconds:03d}"

# 示例使用
if __name__ == "__main__":
    # 模拟开始和结束时间
    start = datetime.now()
    
    # 这里模拟一些耗时操作
    import time
    time.sleep(2.5)  # 休眠2.5秒
    
    end = datetime.now()
    
    # 使用计时函数
    elapsed_time = format_timedelta(start, end)
    print(f"耗时: {elapsed_time}")

这个函数会输出类似这样的结果:

耗时: 0:00:02:05:500

表示:

· 0天
· 00小时
· 02分钟
· 05秒
· 500毫秒

使用案例

from datetime import datetime
import time

def main():
    start = datetime.now()
    
    # 您的代码逻辑
    time.sleep(1.2)  # 模拟耗时操作
    
    end = datetime.now()
    
    # 记录耗时
    elapsed = format_timedelta(start, end)
    print(f"操作耗时: {elapsed}")
    # 或者记录到日志: logging.info(f"操作耗时: {elapsed}")

if __name__ == "__main__":
    main()

V 2.0

from datetime import datetime

def format_timedelta(start_time, end_time):
    """
    计算两个datetime对象之间的时间差,并格式化为天:小时:分钟:秒:毫秒
    
    Args:
        start_time (datetime): 开始时间
        end_time (datetime): 结束时间
    
    Returns:
        str: 格式为"天:小时:分钟:秒:毫秒"的字符串
    """
    # 计算时间差
    delta = end_time - start_time
    
    # 直接提取总秒数(包括天数部分的秒数)
    total_seconds = delta.total_seconds()
    
    # 计算各个时间单位
    days = int(total_seconds // 86400)  # 86400秒=1天
    remaining_seconds = total_seconds % 86400
    
    hours = int(remaining_seconds // 3600)
    remaining_seconds %= 3600
    
    minutes = int(remaining_seconds // 60)
    remaining_seconds %= 60
    
    seconds = int(remaining_seconds)
    milliseconds = int((remaining_seconds - seconds) * 1000)
    
    # 格式化为字符串
    return f"{days}:{hours:02d}:{minutes:02d}:{seconds:02d}:{milliseconds:03d}"

# 如果需要更高的性能,可以使用预编译的格式化字符串
def format_timedelta_fast(start_time, end_time):
    """
    更高效的计时函数实现
    """
    delta = end_time - start_time
    total_seconds = delta.total_seconds()
    
    days = int(total_seconds // 86400)
    remaining = total_seconds % 86400
    
    hours = int(remaining // 3600)
    remaining %= 3600
    
    minutes = int(remaining // 60)
    remaining %= 60
    
    seconds = int(remaining)
    milliseconds = int((remaining - seconds) * 1000)
    
    # 使用预分配的列表和join方法,比f-string更快
    return f"{days}:{hours:02d}:{minutes:02d}:{seconds:02d}:{milliseconds:03d}"

性能优化说明

  1. 使用total_seconds():直接获取总秒数,避免了从多个属性中提取和计算
  2. 整数运算:所有计算都使用整数运算,比浮点运算更快
  3. 减少变量创建:尽量重用变量,减少内存分配
Oracle VM VirtualBox虚拟机网络配置与静态IP设置实战 本文详细讲解了Oracle VM VirtualBox虚拟机的网络配置,特别是如何设置静态IP以实现稳定访问。文章对比了NAT、桥接、仅主机等网络模式,并提供了从VirtualBox管理界面到Linux系统内部的完整配置步骤,帮助用户解决IP变动问题,构建可靠的本地开发测试环境。 阅读详情

相关推荐

基于STM32和K210的自动驾驶小车设计

自动驾驶技术正在迅速发展,成为了汽车行业和智能交通领域的热点之一。随着科技的发展,STM32和K210这两款芯片为自动驾驶小车提供了优秀的硬件支持。本文我们将学习如何使用STM32和K210打造一个简单的自动驾驶小车。提示:以下是本篇文章正文内容,下面案例可供参考通过这篇文章,掌握了如何使用STM32和K210构建一个简单的自动驾驶小车。通过了解基本的电路设计,并编写了STM32和K210的代码。通过这个例子,可以更好地理解如何在嵌入式系统中使用STM32和K210,以及如何实现自动驾驶小车的简单功能。

Kyle_Chan_zMH的博客 2223

python time 计时_让你python代码更快的3个小技巧

大家好!今天呢,我们来聊一聊如何加速你的 python 代码。Python 语言的优点可以列举出许多,语法简单易懂、模块丰富、应用广泛等等。但是世界上没有有完美的东西,python 一个明显缺点就是运行速度慢,至少跟 C 语言没法比。所以,不安于现状的 Pythoner 就开发了许多工具。其中,最著名的莫过于 Cython 和 Numba。其中 Cython 可以把 Python 代码转...

weixin_36040020的博客 303

在没有信用卡的情况下怎么申请谷歌云(Google Cloud)?

这笔额度足够用来跑一台云服务器、部署小型网站,甚至可以尝试 AI、机器学习等项目。但问题来了——想要拿到这 300 美元,你必须先通过支付方式验证。默认选项就是绑定一张国际信用卡(Visa、MasterCard 之类),然而不少人没有信用卡,或者信用卡无法支持国际支付,结果就卡在注册第一步。很多人会疑惑:既然是送额度,为什么还要绑卡?原因其实很简单:谷歌需要确认你是真实用户,而不是批量注册薅羊毛;通过支付验证,后续如果你用完 300 美元额度,可以直接进行付费使用;

m0_74824483的博客 5666

Python的一些小技巧

Python的一些小技巧 三元运算符 a = 1 if True else 0 # [表达式成立时的值] if [表达式] else [表达式不成立时的值] 当然,也可以用于缩写if: xxx() if 1 else xx() 全局函数作为类函数 def Func(self,w): print(w) #参数w print(self) #参数self print(self.w) #...

qq_24296409的博客 369

跟着Synopsys报告,一步步拆解车规芯片FMEDA计算(含公式与避坑点)

本文详细解析了车规芯片FMEDA计算的全流程,基于Synopsys报告拆解实战指南,涵盖基础失效率建模、安全机制效能评估及安全指标合成等关键步骤。通过公式解析、数据准备清单和避坑点分享,帮助工程师掌握ISO26262标准下的硬件量化分析技术,提升车载系统设计可靠性。

weixin_30460489的博客 195

【k8s实战】 在离线项目混部 通过kubeflow(tf-operator)部署TensorFlow机器学习任务+prometheus/grafana监控资源使用全过程(最新 图文)

目录在离线混合部署概念最新版kubeflow部署TensorFlow部署二级目录三级目录 在离线混合部署概念 先举一个例子,众所周知的天猫双十一当天的流量非常之大,那么就需要成百上千台服务器构成一个超大集群来提供计算能力,但是双十一过去之后,集群资源就面临着浪费的局面。假设业务分为在线和离线两种模式:在线任务需要资源相对较少,但要求响应时间短;离线任务则不需要对任务进行迅速响应,但是计算量相对较大、占用资源多。那么我们应该怎么在K8S集群上完成这两种业务的部署、并且使得CPU利用率始终维持在一个比较高的水平

Eros1on的博客 1548

5个小技巧提升Python运行速度

👉Python学习路线汇总👈Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)👉Python必备开发工具👈。

2301_82000445的博客 1757

5-EP4CE10F17C8-引脚配置

EP4CE10F17C8-引脚配置

weixin_44479192的博客 720

Slice()函数:实用的Python切片小技巧

Python 的 slice() 函数以简洁的语法和强大的功能,为我们处理数据提供了无尽的便利和可能性。从基础的序列元素选取,到灵活多变的参数组合应用,再到实际编程中的各种场景,slice() 都展现出了它独特的魅力和价值。在未来的编程探索中,不妨多加运用 slice() 函数,感受它带来的高效与便捷,让数据处理变得轻松而富有艺术感。我是橙色小博,关注我,一起学习进步。

橙色小博的博客,励志在人工智能领域发光发热! 2437

Python 爬虫实战:网站反爬机制绕过终极指南(技术原理 + 实战代码 + 避坑技巧)

在 Python 爬虫的世界里,反爬机制是每一个爬虫开发者都必须面对的挑战。网站为了保护自身数据不被恶意爬取,会设置各种反爬机制,这使得爬虫开发变得更加复杂和有趣。本文将详细介绍常见的网站反爬机制及其绕过方法,结合技术原理、实战代码和避坑技巧,帮助你成为一名优秀的爬虫开发者。

u014481728的博客 1006

ABAP 平台注册 OAuth 2.0 Client 的完整实践指南(覆盖 Authorization Code、SAML Bearer 与 PKCE)

本文详述了在ABAP平台上注册入站OAuth 2.0 Client的关键技术和操作要点。文章面向SAP技术人员,系统梳理了前置条件(TLS/SSL、技术用户、授权对象)、配置路径(SOAUTH2事务)、授权类型差异(授权码、SAML Bearer、PKCE)等重要内容。特别强调入站与出站配置的区别,并提供了保密客户端和公有客户端的配置指引。文中所有事务码和参数均参考SAP官方文档,包含多个实用案例和权限配置建议,为ABAP系统作为OAuth 2.0授权服务器的实施提供全面指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 298

python控制台倒计时输出的两个小技巧

最近在写一个脚本,希望在time.sleep()的时候每秒钟有一次打印输出,找到两种方法: 每秒打印一个小数点 import sys import time for i in range(1,10): time.sleep(1) print('.',end='') sys.stdout.flush() 在输出不换行的情况下,如果没有sys.stdout.flush(),python会在循环结束之后才一次性打印所有的点,和我们的目标背道而驰,所以需要每次打印

SimonLiu的博客 2643

Python 爬虫实战:抓取百科网站上某个词条的详细信息

百科网站(如维基百科)为用户提供了丰富的知识内容,涵盖了从历史、文化到科技等几乎所有领域的知识。对于需要大量数据进行分析、研究或机器学习项目的开发者而言,抓取这些网站的数据显得尤为重要。通过编写一个 Python 爬虫,我们能够轻松地抓取百科网站上的某个词条及其详细信息,从而获取并整理这些知识内容。本篇博客将深入介绍如何通过 Python 编写爬虫来抓取百科网站(如维基百科)的某个词条的详细信息,包括标题、正文内容、参考文献等。requests:发送 HTTP 请求,获取页面内容。

2201_76125261的博客 1671

小技巧_装饰器装饰一个递归函数

装饰器装饰一个递归函数

Zmnortal的博客 848

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python函数可以提高代码执行速度吗_让你python代码更快的3个小技巧

大家好!今天呢,我们来聊一聊如何加速你的 python 代码。Python 语言的优点可以列举出许多,语法简单易懂、模块丰富、应用广泛等等。但是世界上没有有完美的东西,python 一个明显缺点就是运行速度慢,至少跟 C 语言没法比。所以,不安于现状的 Pythoner 就开发了许多工具。其中,最著名的莫过于 Cython 和 Numba。其中 Cython 可以把 Python 代码转成 C 代...

weixin_39927861的博客 2744

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python函数装饰器的几个小技巧

函数装饰器1.给函数添加装饰器 1.给函数添加装饰器

weixin_42237702的博客 424

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python全栈-函数式编程

python全栈-函数式编程。

FZ51111的博客 809

python append函数_让你python代码更快的3个小技巧!速度提高了一倍还多

大家好!今天呢,我们来聊一聊如何加速你的 python 代码。Python 语言的优点可以列举出许多,语法简单易懂、模块丰富、应用广泛等等。但是世界上没有有完美的东西,python 一个明显缺点就是运行速度慢,至少跟 C 语言没法比。所以,不安于现状的 Pythoner 就开发了许多工具。其中,最著名的莫过于 Cython 和 Numba。其中 Cython 可以把 Python 代码转成 C 代...

weixin_39928801的博客 387

python中time的用法_python中的计时器timeit的使用方法

本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下:timeit通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过python提供了更强大的计时库:timeit#导入timeit.timeitfrom timeit import timeit#看执行1000000次x=1的时间:timeit('x=1')#看x=1的执行时间,...

weixin_39896839的博客 416

stm32秒表计时器程序_python小技巧:[GUI项目]:Tkinter 创建秒表

在python中使用Tkinter创建秒表,Tkinter是Python的标准GUI库。Python与Tkinter相结合,提供了一种创建GUI应用程序的快速、简便的方法。Tkinter为TKGUI工具包提供了一个强大的面向对象的界面。很容易开始使用Tkinter。# Python program to create a # a new window using Tkinter # importi...

weixin_39725594的博客 415

python小技巧-写一个程序运行时间的计时代码

python-写一个程序运行时间的计时代码

m0_37839114的博客 906

python中函数可以增强代码可读性吗_让你python代码更快的3个小技巧

大家好!今天呢,我们来聊一聊如何加速你的 python 代码。Python 语言的优点可以列举出许多,语法简单易懂、模块丰富、应用广泛等等。但是世界上没有有完美的东西,python 一个明显缺点就是运行速度慢,至少跟 C 语言没法比。所以,不安于现状的 Pythoner 就开发了许多工具。其中,最著名的莫过于 Cython 和 Numba。其中 Cython 可以把 Python 代码转成 C 代...

weixin_39735247的博客 352

python 操作微信闪电贷款_16、6个能够让Python程序快如闪电的小技巧

计时专用函数现在我们知道了需要关注哪里,那么我们可能只想要给运行缓慢的函数计时而不去管代码的其他部分。我们可以使用一个简单的装饰器来做到这点:def timeit_wrapper(func):@wraps(func)def wrapper(*args, **kwargs):start = time.perf_counter() # Alternatively, you can use time....

weixin_39622178的博客 112
上一篇: Python EXCEL 小技巧:总结和比较表格的差异(输出差异和数值相减)
下一篇: Python 文件复制和换名案例汇总
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值