A small example package
Project description
TicTac - Time your Torch Code Easily
This repository simplifies timing of code by reducing the amount of boilerplate code needed. Specifically, it provides a context manager that can be used to time a block of code. The context manager will print the time taken to execute the block of code. Additionally, full classes/objects can be timed easily and statistics are generated.
Installation
pip3 install pytictac
Basic Usage
Old:
import torch
def func(x):
return x*2
start = torch.cuda.Event(enable_timing=True)
end = torch.cuda.Event(enable_timing=True)
start.record()
# Compute
func(2)
end.record()
torch.cuda.synchronize()
print(start.elapsed_time(end))
New:
from pytictac import Timer
def func(x):
return x*2
# Compute
with Timer("func2"):
func(2)
Terminal Output:
Time func2: 0.0655359998345375 ms
Advanced Usage
from pytictac import ClassTimer, ClassContextTimer, accumulate_time
class SmallObject:
def __init__(self):
self.x = 3
@accumulate_time
def method_a(self):
self.x += 2
class TestObject:
def __init__(self):
self.x = 3
self.small_obj = SmallObject()
self.cct = ClassTimer(objects=[self, self.small_obj], names=["Test Object", "Small Object"], enabled=True)
@accumulate_time
def method_a(self):
self.x += 2
self.small_obj.method_a()
@accumulate_time
def method_b(self):
self.x += 2
with ClassContextTimer(parent_obj=self, block_name="method_b.1", parent_method_name="method_b"):
self.x = 3
with ClassContextTimer(
parent_obj=self, block_name="method_b.1.a", parent_method_name="method_b.1", n_level=2
):
self.x = 4
@accumulate_time
def method_c(self):
self.x -= 2
@accumulate_time
def method_d(self):
self.x = 0
def __str__(self):
return self.cct.__str__()
to = TestObject()
to.method_a()
to.method_a()
to.method_a()
to.method_b()
to.method_c()
print(to)
Terminal Output:
Test Object total [ms] count [n] std [ms] mean [ms]
+- method_a: 0.16 3 0.045 0.054
+- method_b: 0.05 1 0.0 0.05
+------ method_b.1: 0.03 1 0.0 0.027
+----------- method_b.1.a: 0.01 1 0.0 0.007
+- method_c: 0.01 1 0.0 0.005
Small Object total [ms] count [n] std [ms] mean [ms]
+- method_a: 0.02 3 0.001 0.005
Releasing
python3 setup.py bdist_wheel
twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytictac-1.0.3-py3-none-any.whl.
File metadata
- Download URL: pytictac-1.0.3-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7d5d85397a69102b3c76cfdec60961ca70efff81536f3546bccff7baa6ac1ea
|
|
| MD5 |
17f9b524c08f3c82fc2c2207c554ca0a
|
|
| BLAKE2b-256 |
5a84745030302b2134443d266d018117dddc8ec8ccde6b1c2bd113bd743982f2
|