cenoser795 发表于 2024-5-14 21:59

python实现记录一段代码执行时间情况

环境:win10,python3.8.10。用python执行一个任务,需要记录何时开始,何时结束,一共运行了多长时间,并用X时X分X秒的样式来展现,记录实现代码。import datetime
import time


start_time = datetime.datetime.now()
print('XX任务开始时间:'+start_time.strftime("%Y年%m月%d日%H时%M分%S秒"))

time.sleep(360)#模拟执行任务

end_time = datetime.datetime.now()
print('XX任务结束时间:'+end_time.strftime("%Y年%m月%d日%H时%M分%S秒"))
run_time=end_time-start_time
print(run_time)

hours, remainder = divmod(run_time.total_seconds(), 3600)
minutes, seconds = divmod(remainder, 60)
print(f"本次任务运行时间:{int(hours)}小时{int(minutes)}分钟{int(seconds)}秒")

cloudflare 发表于 2024-5-15 08:09

我记得用装饰器更方便,不用重复工作

IIce_ 发表于 2024-5-16 10:31

通用脚本,可以直接调用,也可以当做装饰器使用
import atexit
import time

def timing(func=None):
    if func:
      # 被当做装饰器使用时
      def wrapper(*args, **kwargs):
            start_time = time.time()
            result = func(*args, **kwargs)
            end_time = time.time()
            print(f"方法 '{func.__name__}' 的执行时间为: {end_time - start_time} 秒")
            return result
      return wrapper

    else:
      # 记录任务开始时间
      start_time = time.time()
      def __exit():
            # 记录任务结束时间
            end_time = time.time()
            print(f"本次任务 的执行时间为: {end_time - start_time} 秒")
      atexit.register(__exit)

# 直接调用时
timing()
time.sleep(2)

# 作为装饰器使用
@timing
def task_as_decorator():
    time.sleep(1)
    print("任务作为装饰器执行完毕")

task_as_decorator()

52soft 发表于 2024-5-15 06:52

这是记录运行时间

傲雪不傲霜 发表于 2024-5-15 09:45

cloudflare 发表于 2024-5-15 08:09
我记得用装饰器更方便,不用重复工作

是的,相当于套一个计时函数

wkdxz 发表于 2024-5-15 10:24

我有个简单的计时函数,经常用。
from time import time

start_time = time()


def log_step(step):
    print(f"{step}\t累计耗时 {round(time() - start_time,1)} 秒")


for i in range(10000000000):
    if i % 10000000 == 0:
      log_step(f"计算至 {i} ")

weishaovvv 发表于 2024-5-15 10:58

这个好,拿来用用。

LightswornSnow 发表于 2024-5-15 19:24

装饰器经典场景,大概这种感觉
import time
def timing(fn):
    def wrapper(*args,**kwargs):
      start=time.time()
      fn(*args,**kwargs)
      stop=time.time()
      print(f'耗时{stop-start}秒')
      return
    return wrapper
@timing
def test():
    print("Hello, World!");
    return
test()

cenoser795 发表于 2024-5-15 20:15

LightswornSnow 发表于 2024-5-15 19:24
装饰器经典场景,大概这种感觉
import time
def timing(fn):


学习了!

cenoser795 发表于 2024-5-15 20:16

cloudflare 发表于 2024-5-15 08:09
我记得用装饰器更方便,不用重复工作

学习了!

hellohuan 发表于 2024-5-16 02:44

LightswornSnow 发表于 2024-5-15 19:24
装饰器经典场景,大概这种感觉
import time
def timing(fn):


又学到了一招!
页: [1] 2
查看完整版本: python实现记录一段代码执行时间情况