Time the execution of Python code using syntax similar to MATLAB's tic and toc functions.
|
Contents |
Installation
-
Using
pip:pip install py-tictoc-timer
-
Using
pipenv:pipenv install py-tictoc-timer
-
Using
poetry:- In your
pyproject.tomlfile, add:[tool.poetry.dependencies] py-tictoc-timer = "*"
Then in the terminal, run:poetry install - Or run:
poetry add py-tictoc-timer
- In your
-
Using
conda:conda install py-tictoc-timer
Usage
-
Basic usage:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic() >>> sleep(1.1) >>> tt.toc() Elapsed time: 1secs
-
Within context manager:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> with TicToc(): ... sleep(1.1) Elapsed time: 1secs
-
Within context manager using custom messages:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> with TicToc(begin_message="start", end_message="end"): ... sleep(1.1) start end: 1secs
-
Particularly helpful when running loops:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> with TicToc(begin_message="Start loop", end_message="Time to run loop") ... for value in ["first", "second", "Third"]: ... with TicToc(f"- Time for {value}"): ... sleep(1.1) Start loop - Time for first: 1secs - Time for second: 1secs - Time for Third: 1secs Time to run loop: 3secs
-
Custom message:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> with TicToc("Total Time"): ... sleep(1.1) Total time: 1secs
-
With restart during
.tic():>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic(restart=True) >>> sleep(1.1) >>> toc() Elapsed time: 1secs >>> toc() Elapsed time: 1secs
-
With restart during
.toc():>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic() >>> sleep(1.1) >>> tt.toc(restart=True) Elapsed time: 1secs >>> tt.toc() Elapsed time: 1secs
-
With restart using
.rtoc():>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic() >>> sleep(1.1) >>> tt.rtoc() Elapsed time: 1secs >>> tt.toc() Elapsed time: 1secs
-
With time returned as value:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic() >>> sleep(1.1) >>> value = tt.toc_value() >>> print(round(value, 1)) 1.1
-
With time returned as string:
>>> from py_tictoc_timer.tictoc import TicToc >>> from time import sleep >>> tt = TicToc() >>> tt.tic() >>> sleep(1.1) >>> value = tt.toc_string() >>> print(value) 1secs
Contribution
Contribution is always welcome!
- First, either fork or branch the main repo.
- Clone your forked/branched repo.
- Build your environment with any of the below options:
- With
pipenv:if (-not (Test-Path .venv)) {mkdir .venv} python -m pipenv install --requirements requirements.txt --ignore-pipfile --skip-lock --no-site-packages python -m pipenv install --requirements requirements-dev.txt --dev --ignore-pipfile --skip-lock --no-site-packages python -m pipenv run pre-commit install
- With
poetryon Windows:(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python - python -m poetry run pre-commit install
- With
poetryon Linux:curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python - python -m poetry run pre-commit install
- With
- Start contributing.
- Ensure you add additional Unit Test's to the test library for each new feature/functionality.
- Ensure that all the tests are passing successfully.
- When you're happy with the changes, raise a Pull Request to merge with the main branch again.
Tests
-
Run Black:
pipenv run python -m black --safe py_tictoc_timer tests
-
Run PyTests:
pipenv run python -m pytest --verbose --cov=py_tictoc_timer --cov-report=term --cov-report=html:cov-report/html --cov-report=xml:cov-report/xml/cov-report.xml
-
Run MyPy Tests:
pipenv run mypy py_tictoc_timer --ignore-missing-imports --pretty --install-types --non-interactive
Credit
This package was inspired by a few other packages:
Why you should use py-tictoc-timer and not any of the others is because this package has:
- Better & more flexible restart to the timer
- Better custom messages during starting & ending the timer
- Enhanced usage within a context manager
Maintainers
Metadata
Release files for py-tictoc-timer 2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| py_tictoc_timer-2.1.1.tar.gz | 6.8 kB | Without provenance | Details for py_tictoc_timer-2.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| py_tictoc_timer-2.1.1-py3-none-any.whl | Python 3 | none | any | Details for py_tictoc_timer-2.1.1-py3-none-any.whl |
Total release size: 13.8 kB
Release files / py_tictoc_timer-2.1.1.tar.gz
| Download URL | py_tictoc_timer-2.1.1.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32d16c53bdc46711a4a523b4130d1d3e5d4c53cbff69b8b750537971e085515f
|
|
BLAKE2b-256 checksum How to use checksums |
4333940d56a35ee851d648ed8a1bfba4d31186804f85b140339e7c04fcb2d526
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.10.11 Linux/5.15.0-1037-azure
|
Release files / py_tictoc_timer-2.1.1-py3-none-any.whl
| Download URL | py_tictoc_timer-2.1.1-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dfa805596c4052f2b1646c8904ac271aab4603fe30460af2ec2a984590b2d257
|
|
BLAKE2b-256 checksum How to use checksums |
6efcd2a99587a4dcd6bda2048dd49be896aa5d6b1cbef2a3fd27c035cfc9a1a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.10.11 Linux/5.15.0-1037-azure
|
Security for py-tictoc-timer 2.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.