Skip to main content

Simple Stopwatch

Quality Gate Status Maintainability Rating Reliability Rating Security Rating Coverage

Bugs Code Smells Duplicated Lines (%) Lines of Code Technical Debt Vulnerabilities

This package is a simple stopwatch implementation I use on several projects and got tired of copying and pasting this code all around.

The default elapsed time format is DAYS.HOURS:MINUTES:SECONDS.MS

Examples

01. Creating new stopwatch

from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch()

The snippet above shows how to instantiate a StopWatch. Creating an instance like this will not start the stopwatch.

02. Creating new stopwatch

from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch(True)

# or
sw2 = StopWatch(auto_start=True)

The snippet above shows how to instantiate a StopWatch. Creating an instance like this WILL autostart the stopwatch.

03. Getting the final elapsed time

import time
from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch(True)
time.sleep(10)
elapsed_time = sw.end()
print(elapsed_time)

Output:

0:00:10.001899

This snippet auto starts the stopwatch, waits for 10 seconds, stops it and then gets the total elapsed time.

04. Getting current/partial elapsed time

import time
from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch(True)
for i in range(10):
    print(f"[{i:02d}] Partial: {sw.elapsed()}")
    time.sleep(1)
elapsed_time = sw.end()
print(f"Total Elapsed time: {elapsed_time}")

Output:

[00] Partial: 0:00:00.000010
[01] Partial: 0:00:01.008056
[02] Partial: 0:00:02.020088
[03] Partial: 0:00:03.030782
[04] Partial: 0:00:04.040916
[05] Partial: 0:00:05.054144
[06] Partial: 0:00:06.062206
[07] Partial: 0:00:07.075621
[08] Partial: 0:00:08.088999
[09] Partial: 0:00:09.100672
Total Elapsed time: 0:00:10.115585

This snippet auto starts the stopwatch, gets the partial elapsed time 10 times during 10 seconds, stops it and then gets the total elapsed time.

05. Getting current/partial elapsed time in timedelta format

import time
from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch(True)
for i in range(10):
    print(f"[{i:02d}] Partial: {sw.elapsed(True).total_seconds()}")
    time.sleep(1)
elapsed_time = sw.end(True).total_seconds()
print(f"Total Elapsed time: {elapsed_time}")

Output:

[00] Partial: 1.5e-05
[01] Partial: 1.009903
[02] Partial: 2.022595
[03] Partial: 3.033897
[04] Partial: 4.046012
[05] Partial: 5.056192
[06] Partial: 6.068632
[07] Partial: 7.068943
[08] Partial: 8.084072
[09] Partial: 9.097145
Total Elapsed time: 10.111292

This works just like the previous snippet, but the elapsed time is retrieved in timedelta format, and then we call total_seconds() functions to get the elapsed time in seconds.

06. Getting the moment when the stopwatch started (UTC and local)

from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch()  # Local datetime
print(sw.start_datetime)
sw.start()
print(f"{sw.start_datetime} | {sw.start_datetime.tzinfo}")
sw2 = StopWatch(use_utc=True)  # UTC datetime
print(sw2.start_datetime)
sw2.start()
print(f"{sw2.start_datetime} | {sw2.start_datetime.tzinfo}")

Output:

None
2021-12-23 20:43:50.585377 | None
None
2021-12-23 23:43:50.585377 | None

Note: All examples involving start_datetime can also be applied to stop_datetime.

07. Getting the moment when the stopwatch started, making the datetime timezone aware.

from raccoon_simple_stopwatch.stopwatch import StopWatch

sw = StopWatch(use_utc=True, make_tz_aware=True)
print(sw.start_datetime)
sw.start()
print(f"{sw.start_datetime} | {sw.start_datetime.tzinfo}")
sw2 = StopWatch(make_tz_aware=True)
print(sw2.start_datetime)
sw2.start()
print(f"{sw2.start_datetime} | {sw2.start_datetime.tzinfo}")

Output:

None
2021-12-23 23:41:56.415212+00:00 | UTC
None
2021-12-23 20:41:56.415212-03:00 | E. South America Standard Time

Useful links

Release files for raccoon-simple-stopwatch 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for raccoon-simple-stopwatch 0.0.3
File Size Uploaded
raccoon_simple_stopwatch-0.0.3.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for raccoon-simple-stopwatch 0.0.3
File Interpreter ABI Platform
raccoon_simple_stopwatch-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 10.7 kB

Release files / raccoon_simple_stopwatch-0.0.3.tar.gz

Download URL raccoon_simple_stopwatch-0.0.3.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5b7aa6d2a76e2b8b26d4005c3d1e839e922b6aaa8dee88a2dddcd7d37e69fdf9
BLAKE2b-256 checksum
How to use checksums
b938508551514dd5b5489cb4d05df5ee1283ecc9c3b304bbe9077ce4fe9f6e5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.1

Release files / raccoon_simple_stopwatch-0.0.3-py3-none-any.whl

Download URL raccoon_simple_stopwatch-0.0.3-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
401b021dc92dad4daf25623088f3011e17261f22a058af17ad4b1bced3063bef
BLAKE2b-256 checksum
How to use checksums
8affbec83d4835ec4b1d5d3627f42ce3216f8ebe311cbde9bbd77a77e166eca2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.1

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page