Stopwatch 管理器

本页将指导您如何使用 Stopwatch 管理器来托管多个 Stopwatch 实例。

指导

当我们在一些简单的项目中使用 Stopwatch 时,通常仅创建一个 Stopwatch 实例。

demo_stopwatch: Stopwatch = Stopwatch()

但在一些中、大型项目中,我们可能会需要使用多个 Stopwatch 实例并在项目全局共享。此时,上文中直接创建的 Stopwatch 实例可能不便于在全局范围内共享和维护。而当需要多个 Stopwatch 实例时,对实例对象的管理和维护将变得复杂。

在 0.1.3 或更高版本中,我们可以使用一个或多个 Stopwatch 管理器托管这些 Stopwatch 实例并在全局范围内共享,开发者也无需维护这些实例对象。

在下文中,我们将通过几段连续的 Python 代码向您演示如何使用 Stopwatch 管理器。

导入模块

在使用 Stopwatch 管理器之前,我们应该导入 StopwatchManager

from stopwatch import StopwatchManager

如果您不需要多个 Stopwatch 管理器实例,可以直接使用默认的 Stopwatch 管理器并在全局范围内共享。

from stopwatch import default_manager

符号 default_manager 是一个数据类型为 StopwatchManager 的变量,它在包 stopwatch 被首次导入时创建。因此,您可以在全局范围内导入此变量,以在全局范围内共享 Stopwatch 默认管理器实例。

创建管理器

如果 Stopwatch 默认管理器不足以满足需求,您可以额外创建多个 Stopwatch 管理器实例。

demo_manager: StopwatchManager = StopwatchManager(
    max_stopwatch_count = None
)

StopwatchManager 的构造器方法有一个数据类型为 int 的可选参数 max_stopwatch_count,该参数指示被创建的 Stopwatch 管理器最多可以同时托管多少个 Stopwatch 实例。如果未提供该参数或值为 None,则不限制 Stopwatch 实例个数。

添加 Stopwatch

我们在本篇指导文章的开头,定义了名为 demo_stopwatch 的变量,它是一个 Stopwatch 实例。现在我们尝试将 demo_stopwatch 添加到上文创建的 Stopwatch 管理器实例 demo_manager 中。

方法 add 有 2 个参数,它们分别是:

参数名

类型

必选

描述

stopwatch_name

str

True

Stopwatch 实例唯一名称。

stopwatch_instance

Stopwatch

True

被添加的 Stopwatch 实例对象。

我们强烈建议您使用 namespace::name 的形式命名 Stopwatch 实例唯一名称,这样当多个协作项目在同一全局范围内,不会引发 Stopwatch 实例唯一名称冲突,Namespace 可以是项目名称。

triangle-exclamation

如果当前 Stopwatch 管理器内已托管的 Stopwatch 实例个数等于或超过 max_stopwatch_count 参数的限制,将引发 MaxLimitError 异常。

创建 Stopwatch

除了向 Stopwatch 管理器添加已有 Stopwatch 实例外,我们也可以直接在 Stopwatch 管理器中创建一个具有默认构造器方法参数的新 Stopwatch 实例。

方法 create 具有 1 个数据类型为 str 的参数 stopwatch_name,该参数指示新创建并添加的 Stopwatch 实例唯一名称。创建并添加后,该方法返回数据类型为 Stopwatch 的 Stopwatch 实例对象。

我们还可以创建并添加一个 Stopwatch 实例后,使它开始计时。

移除 Stopwatch

当我们需要从 Stopwatch 管理器中移除指定唯一名称的 Stopwatch 实例时,我们可以这样做。

如果需要移除所有 Stopwatch 实例,可以使用 clear 方法。

triangle-exclamation

获得 Stopwatch

当我们需要在项目全局范围内共享 Stopwatch 实例时,无需维护这些 Stopwatch 实例,而是使用 Stopwatch 实例的唯一名称从 Stopwatch 管理器中获得它。

如果我们需要确定一个 Stopwatch 实例是否存在,可以使用 has 方法检查。

管理 Stopwatch

获取实例个数

当我们需要获取指定 Stopwatch 管理器已托管的 Stopwatch 实例个数时,可以使用 get_count 方法。

方法 get_count 具有 int 数据类型的返回值,其指示 Stopwatch 实例个数。

使实例开始计时

当我们需要使指定一批或全部 Stopwatch 实例开始计时时,可以使用 starts 方法。

方法 starts 有一个数据类型为 list 的可选参数 stopwatch_names,其指示需要开始的 Stopwatch 实例的唯一名称列表。如果未提供此参数或值为 None,则使所有 Stopwatch 实例开始计时。

该方法返回数据类型为 int 的返回值,指示实际开始的 Stopwatch 实例个数。

triangle-exclamation

使实例停止计时

同样的,我们也可以使指定一批或全部 Stopwatch 实例停止计时。

该方法返回数据类型为 int 的返回值,指示实际停止的 Stopwatch 实例个数。

triangle-exclamation

使实例重置

除了开始计时、停止计时外,我们也可以使指定一批或全部 Stopwatch 实例重置。

获取实例总计时时长

当我们需要获取指定一批或全部 Stopwatch 实例的当前总计时时长时,可以使用 get_watchs 方法。

方法 get_watchs 相对于上文所提及的其他方法有一个额外数据类型为 int 的可选参数 watch_precision,其指示获取总计时时长的精度(小数点位数)。如果未提供此参数或值为 None,其行为与 Stopwatch 实例的 get_watch 方法对参数 watch_precision 的行为一致。

示例

源代码

运行结果

Last updated

Was this helpful?