Skip to content

timer_mert_dogan_aygun.py #825

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions Week06/timer_mert_doğan_aygün.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import time

class ExecutionTimer:
"""
A context manager to measure and display the elapsed time for a block of code.

The ExecutionTimer calculates the time spent inside a context block,
recording the start and end times to determine the elapsed duration.

Attributes:
start_time (float): Records when the timer starts.
end_time (float): Records when the timer stops.

Example:
>>> with ExecutionTimer() as timer:
... time.sleep(2)
...
Elapsed time: 2.0000 seconds
"""

def __init__(self):
"""Initialize the ExecutionTimer with uninitialized start and end times."""
self.start_time = None
self.end_time = None

def __enter__(self):
"""
Starts the timer by capturing the current time.

Returns:
ExecutionTimer: The current instance to access start and end times if needed.
"""
self.start_time = time.time()
return self

def __exit__(self, exc_type, exc_value, traceback):
"""
Stops the timer and calculates the elapsed time upon exiting the context.

Args:
exc_type (type): Type of any exception raised within the context.
exc_value (Exception): Exception instance raised within the context.
traceback (traceback): Traceback object for the raised exception.

Returns:
bool: False to propagate any exceptions that occur during execution.
"""
self.end_time = time.time()
elapsed_time = self.end_time - self.start_time
print(f"Elapsed time: {elapsed_time:.4f} seconds")
return False