Skip to main content

Timer

Python code timer, support block wise and function wise

Installation

pip install timer

Usage

  1. import

    from timer import timer
    
  2. decorate without brackets

    @timer
    def func(): ...
    
  3. decorate with brackets

    @timer()
    def func(): ...
    
  4. decorate with name and time unit

    @timer('function name', 's')
    def func(): ...
    
  5. decorate with key word arguments

    @timer(name='function name', unit='s')
    def func(): ...
    
  6. block wise without object

    with timer():
        ...
    
  7. block wise with object

    with timer() as t:
        ...
        print(t.elapse)
    

Sample Code

import logging
import time

from timer import timer, get_timer

# default timer's logging level is logging.DEBUG
# so timer would print nothing if logging level is logging.INFO or higher
logging.basicConfig(level=logging.DEBUG)

# or you can change default timer's logging level
timer.set_level(logging.DEBUG)

# also you can get a timer with custom logging level with get_timer(level)
warning_timer = get_timer(logging.WARNING)


# explicit the timer's name and it's time unit
@timer('function:add', unit='s')
def add(a, b):
    time.sleep(.1)
    return a + b


# function name is timer's name for default
@timer
def sub(a, b):
    time.sleep(.1)
    return a - b


if __name__ == '__main__':
    # 'timer' would be timer's name by default
    with timer('time.sleep(2)') as t:
        print(3)
        time.sleep(1)
        print(f'after time.sleep(1) once, t.elapse = {t.elapse}')
        time.sleep(1)
        print(f'after time.sleep(1) twice, t.elapse = {t.elapse}')
    print(f'after with, t.elapse = {t.elapse}')
    
    with warning_timer('test'):
       pass

    print(add(1, 1))
    print(sub(2, 1))

Outputs

3
after time.sleep(1) once, t.elapse = 1.003798776
after time.sleep(1) twice, t.elapse = 2.0052743459999998
DEBUG:timer.time.sleep(2): 2.006 s
after with, t.elapse = 2.005628447
WARNING:timer.test:start
WARNING:timer.test:cost 0 ms
DEBUG:timer.function:add: 0.105 s
2
DEBUG:timer.sub: 102 ms
1

Special Thanks

@Krzysztof S

Metadata

Release files for timer 0.3.0

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

Source distribution (sdist)

Source distribution for timer 0.3.0
File Size Uploaded
timer-0.3.0.tar.gz 7.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for timer 0.3.0
File Interpreter ABI Platform
timer-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.3 kB

Release files / timer-0.3.0.tar.gz

Download URL timer-0.3.0.tar.gz
Size 7.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9b11b71a48648f878dc4c29aa84387806d193ed9f71a39e84edb10f38ed6941f
BLAKE2b-256 checksum
How to use checksums
2f734f181969840995cfc3e160108ff91a9732c40578e1e2e0ea9a42a56bd543
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Release files / timer-0.3.0-py3-none-any.whl

Download URL timer-0.3.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d97061be15de87d309697c3088a30af58712bd60c971536161fccc0e3d051f3
BLAKE2b-256 checksum
How to use checksums
d3256b3dd2c9f899562718d6781d7ad8f1608ba760c4cb5c20730a7e9f0cc7f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

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