跳转到主要内容

上下文管理器,用于打印或记录代码块的执行时间

项目描述

supertimer

上下文管理器,用于打印或记录代码块的执行时间

原始网址: https://github.com/mariushelf/supertimer

词源

此软件包提供了一个计时器。但是“计时器”这个名字已经被占用。所以我需要一个新名字。受我对旧式超级任天堂的新鲜热情的启发,我想这个计时器也可以叫做“超级”。

用法

作为上下文管理器使用

用于记录代码块的持续时间

from supertimer import timer
import time

with timer("Sleeping a bit"):
    time.sleep(2)

这将记录

Sleeping a bit starting at 2020-12-14 18:34:54.403371
Sleeping a bit finished successfully at 2020-12-14 18:34:56.404208 after 0:00:02.000837.

作为装饰器使用

from supertimer import timer
import time

@timer("Sleeping a bit")
def sleep_a_bit():
    time.sleep(2)

sleep_a_bit()

每次装饰的函数被调用时,这将记录与上下文管理器相同的消息

Sleeping a bit starting at 2020-12-14 18:34:54.403371
Sleeping a bit finished successfully at 2020-12-14 18:34:56.404208 after 0:00:02.000837.

配置输出方法

默认情况下,输出记录在loglevel DEBUG级别。

可以通过loglevel参数更改loglevel。可以通过将print参数设置为True来激活将输出打印到stdout。可以通过将log设置为False来禁用记录

with timer(loglevel=logging.INFO):
    # logging at loglevel INFO, no printing
    ...
    
with timer(print=True, log=False):
    # just printing, no logging
    ...

更改记录器

可以配置记录器

import logging

logger = logging.getLogger("my.custom.logger")
with timer(logger=logger):
    do_something()

如果没有提供记录器,则使用名为supertimer的记录器。

方便类

有一些方便的类,预先配置为特定的loglevel或仅打印

  • print_timer
  • debug_timer
  • info_timer

配置默认值

所有构造函数参数都有一个default_.*类属性对应物,在省略参数的情况下指定默认值。

例如,要将默认loglevel更改为WARNING,可以这样操作

timer.default_loglevel = logging.WARNING
with timer("Sleep warning"):
    # log timings with loglevel `WARNING`
    time.sleep(2)
    
with timer("Sleep debug", loglevel=logging.DEBUG):
    # log timings with loglevel `DEBUG`
    time.sleep(2)

如何测量时间

默认情况下,起始时间和结束时间使用 datetime.dateime.now 获取。持续时间通过计算起始时间和结束时间的差值来计算,结果是一个 datetime.timedelta 对象。

计时器函数可以被覆盖

import timeit

with timer(timer_func=timeit.default_timer):
    ...

timer_func 参数期望一个可调用的对象,当不带参数调用时,返回支持 minus 操作的值。

许可协议

麻省理工学院

变更日志

0.4.0

  • 计时器现在可以用作装饰器
  • 全局默认配置
  • 额外的 log 参数
  • 文档
  • 将默认日志记录器的名称更改为 supertimer

0.3.0

  • 方便的类 print_timerdebug_timerinfo_timer
  • 使计时器函数可配置

0.2.0

  • 在执行后提及成功或错误

0.1.0

  • 首次发布

作者

Marius Helf (helfsmarius@gmail.com)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

supertimer-0.4.0.tar.gz (4.9 kB 查看哈希)

上传时间

构建分发

supertimer-0.4.0-py3-none-any.whl (4.7 kB 查看哈希)

上传时间 Python 3

由以下机构支持