Python 计算两个时间之间的耗时

news2024/10/5 23:26:12

博主按照自己的需求写的一个可以计算程序耗时的函数,各位有需要的自行改写哈

实现的大致功能

        功能1

                记录开始时间,返回一个时间字典。数据包括:开始时间的日期格式、文本格式

        功能2

                记录结束时间和耗时,返回一个时间字典。数据包含:开始时间和结束时间的日期格式、文本格式,另外还多一个时间耗时。

        结果示例

        

代码实现

import time
import datetime


# 计算耗时
def calculate_time_consumption(is_start=True, start_time=0.0, fmt="%Y-%m-%d %H:%M:%S"):
    """
    计算传入时间的耗时,返回字典对象,示例:
    {'开始时间-日期格式': 1706836313.274818,
    '开始时间-文本格式': '2024-02-02 09:23:03',
    '结束时间-日期格式': 1706836313.274818,
    '结束时间-文本格式': '2024-02-02 09:23:06',
    '时间耗时': '执行耗时:0小时0分钟4秒'}

    :param is_start: 是否为获取开始时间,默认为获取开始时间
    :param start_time: 开始时间的日期格式
    :param fmt: 日期转文本格式,默认为%Y-%m-%d %H:%M:%S 示例:2024-02-02 09:23:03
    :return: 返回一个时间字典,包含开始、结束的日期和文本格式、计算后的时间耗时
    """
    time_dict = {
        "开始时间-日期格式": "",
        "开始时间-文本格式": "",
        "结束时间-日期格式": "",
        "结束时间-文本格式": "",
        "时间耗时": "",
    }

    try:
        # 记录开始时间
        if is_start:
            start_time = time.time()
            time_dict["开始时间-日期格式"] = start_time
            start_time_str = datetime.datetime.fromtimestamp(start_time).strftime(fmt)
            time_dict["开始时间-文本格式"] = start_time_str

        # 计算耗时
        else:
            # 处理传入的开始时间
            time_dict["开始时间-日期格式"] = start_time
            start_time_str = datetime.datetime.fromtimestamp(start_time).strftime(fmt)
            time_dict["开始时间-文本格式"] = start_time_str

            # 获取结束时间
            end_time = time.time()
            time_dict["结束时间-日期格式"] = end_time
            end_time_str = datetime.datetime.fromtimestamp(end_time).strftime(fmt)
            time_dict["结束时间-文本格式"] = end_time_str

            # 计算耗时
            execution_time = math.ceil(end_time - start_time)
            hours = execution_time // 3600
            minutes = (execution_time % 3600) // 60
            seconds = execution_time % 60
            time_consumption = f"执行耗时:{hours}小时{minutes}分钟{seconds}秒"
            time_dict["时间耗时"] = time_consumption

    except Exception as e:
        print(traceback.format_exc())
    finally:
        return time_dict


# 记录开始时间
start_time_dict = calculate_time_consumption(is_start=True)
print(start_time_dict)
s_time = start_time_dict["开始时间-日期格式"]

time.sleep(3)  # 模拟执行程序耗时

# 记录结束时间
end_time_dict = calculate_time_consumption(is_start=False, start_time=s_time)
print(end_time_dict)
e_time = end_time_dict["结束时间-日期格式"]

结果:

# 输出的开始时间
start_data = {
    '开始时间-日期格式': 1706837037.4838943,
    '开始时间-文本格式': '2024-02-02 09:23:57',
    '结束时间-日期格式': '',
    '结束时间-文本格式': '',
    '时间耗时': ''
}


# 输出的结束时间
end_data = {
    '开始时间-日期格式': 1706837037.4838943,
    '开始时间-文本格式': '2024-02-02 09:23:57',
    '结束时间-日期格式': 1706837040.4889436,
    '结束时间-文本格式': '2024-02-02 09:24:00',
    '时间耗时': '执行耗时:0小时0分钟4秒'
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web3智能合约:重新定义商业合作的未来

随着区块链技术的飞速发展,Web3时代正逐渐到来,而其中的智能合约成为推动商业合作变革的关键力量。本文将深入探讨Web3智能合约的概念、特点以及对商业合作未来的巨大影响。 什么是Web3智能合约? 智能合约是一种以代码形式编写、自动执行合同…

Oracle 面试题 | 05.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Flask 入门4:Flask 模板

1. 前言 Flask 拥有丰富的扩展方法,且都有统一的特点:简单和即学即用。当我们要实现某个功能之前,可以提前去搜一搜这个功能包是否已经存在,这样也能帮助我剩下很多时间。那么要去哪里找到这些扩展包呢,这里推荐两个方…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

微信小程序可以一个人开发么?

随着移动互联网的飞速发展,微信小程序已经成为了人们日常生活中不可或缺的一部分。它以其便捷性和高效性赢得了广大用户的青睐。对于许多有志于进入小程序领域的开发者来说,一个常见的问题是:微信小程序可以一个人开发吗?答案是肯…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

【笔记】React-Native Navigation页面导航

/** * 须知:a bare React Native Project(not an Expo managed project) * * React官方文档:https://reactnative.dev/docs/navigation * * 当前文档基于6.x * React Navigation文档:https://reactnavigation.org/docs/getting-started * …

C++ Webserver从零开始:基础知识(七)——多进程编程

前言 在学习操作系统时,我们知道现代计算机往往都是多进程多线程的,多进程和多线程技术能大大提高了CPU的利用率,因此在web服务器的设计中,不可避免地要涉及到多进程多线程技术。 这一章将简要讲解web服务器中的多进程编程&#x…

AI与数字孪生

源自:译文 “人工智能技术与咨询”发布 AI和数字孪生 预测分析:网络安全水晶球 面对不断变化的威胁,提供自适应安全防护 自然语言处理:解码威胁语言 先进技术:人工智能作为数字孪生安全的基础 道德考量 …

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说,就直接释放了其占用的内存,对于引用类型obj来说,销毁的只是变量obj对堆内存地址 1001 的引用,obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢? V8的垃圾回收策略主要是基于…

git将项目的某次签入遴选(Cherry-Pick)另一个项目

需求&#xff1a;将项目Product&#xff0c;分支feature/platform&#xff0c;签入959294ce6b75ee48c5cb22c46d7398654628a896&#xff0c;遴选到项目BRP&#xff0c;分支dev 第一步&#xff1a;使用原签入生成patch文件&#xff08;git format-patch -1 <commit_hash>&a…

西部数据DX4000数据恢复案例

西部数据DX4000是一款NAS&#xff08;网络附加存储&#xff09;产品&#xff0c;它集成了存储、备份、共享和远程访问企业数据等多种功能。然而&#xff0c;和任何电子设备存在一样通病&#xff0c;DX4000也可能会出现故障&#xff0c;导致数据无法访问。下面是一个客户的西部数…

Python OpenCV实现图片像素区域缩放

Python OpenCV实现图片像素区域缩放 前言项目安装OpenCV和Pillow思路代码编写 前言 遇到一个要将大量图片缩放成统一规格的难题&#xff0c;并且这些图片周围还有很多空白像素&#xff0c;所以用Python实现一下。 项目 安装OpenCV和Pillow pip install opencv-python pip …

基于YOLOv8的水下生物检测,多种优化方法---DCNv4结合SPPF,效果秒杀DCNv3,涨点两个点(四)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了水下生物检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析&#xff0c;以及如何优化提升检测性能。 &#x1f4a1;&#x1f4a1;&#x1f4a1;加入DCNv4_SPPF mAP0.5由原始的0.522提升至0.543 1.水…

7.3、向量空间的简要回顾

7.3、向量空间的简要回顾 ​ 在开始讨论格之前&#xff0c;我们先提醒读者注意线性代数中的一些重要定义和思想。向量空间的定义可以非常宽泛&#xff0c;但就本章而言&#xff0c;我们只需考虑对于某个正整数 m&#xff0c;包含在 R m R^{m} Rm中的向量空间即可。 ​ 我们从…

[职场] 阐述演员这个职业 #微信#学习方法#媒体

阐述演员这个职业 演员这个职业是一种极具挑战性和魅力的职业&#xff0c;它让人们有机会通过表演来展现自己&#xff0c;将自身的才华和潜力发挥到极致。 1. 演员需要具备扎实的专业素养&#xff0c;包括表演技巧、语言技巧、心理技巧等。演员需要深入理解角色&#xff0c;从…

大数据 - Spark系列《一》- 分区 partition数目设置详解

目录 &#x1f436;3.2.1 分区过程 &#x1f436;3.2.2 SplitSize计算和分区个数计算 &#x1f436;3.2.3 Partition的数目设置 1. &#x1f959;对于数据读入阶段&#xff0c;输入文件被划分为多少个InputSplit就会需要多少初始task. 2. &#x1f959;对于转换算子产生的…

【Bugs】Jmeter报错:NoSuchMethodError: org.apache.jmeter.samplers.

报错情况 Jmeter版本&#xff1a;5.4.3 报错场景&#xff1a;在线程组中添加了jpgc - PerfMon Metrics Collector性能监控组件后出现报错。 Jmeter中无法运行测试&#xff0c;cmd命令行中出现以下报错。 cmd报错详细内容&#xff1a; Uncaught Exception java.lang.NoSuchMe…

如何系统的自学Python?通义千问、讯飞星火、文心一言及ChatGPT的回答

如何系统的自学Python&#xff1f;来看看通义千问、讯飞星火、文心一言及ChatGPT的回答. 第一个是马老师的通义千问 系统地自学Python是一个循序渐进的过程&#xff0c;从基础语法到实践项目&#xff0c;再到专业领域的深入学习。下面是一个详细的步骤指南&#xff1a; 了解Py…

Qt5 基于OpenGL实现六轴机械臂三维仿真

需求 在Qt中通过OPenGL方式加载三维模型STL文件&#xff0c;然后将多个结构的STL文件类型的模型进行组装&#xff0c;形成6轴机械臂三维模型的显示&#xff0c;并且可以对每个关节进行关节角度的控制。 新建一个C类STLFileLoader&#xff0c;用于加载STL文件&#xff0c;并进…