Skip to content

Instantly share code, notes, and snippets.

@dipietrantonio
Created September 9, 2019 19:47
Show Gist options
  • Save dipietrantonio/f268a85810234b89838ef1dab58604a3 to your computer and use it in GitHub Desktop.
Save dipietrantonio/f268a85810234b89838ef1dab58604a3 to your computer and use it in GitHub Desktop.
Using a Python context manager as timer.
import time
class Timer:
def __enter__(self):
self.__start = time.time()
def __exit__(self, exType, exValue, exTraceback):
self.__elapsed = time.time() - self.__start
@property
def elapsed(self):
return self.__elapsed
timer = Timer()
with timer:
time.sleep(2)
print("elapsed time:", timer.elapsed)
@maces
Copy link

maces commented Sep 9, 2019

Nice :)
Added additional sleeps for further demonstration:

import time

class Timer:

    def __enter__(self):
        self.__start = time.time()


    def __exit__(self, exType, exValue, exTraceback):
        self.__elapsed = time.time() - self.__start


    @property
    def elapsed(self):
        return self.__elapsed


timer = Timer()

time.sleep(1)

with timer:
    time.sleep(2)

time.sleep(1)

print("elapsed time:", timer.elapsed)
$ python timer.py 
elapsed time: 2.001952489954798

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment