Time python operations or enforce a time limit for function calls.
Project description
A module to roughly measure the amount of time Python operations take. There is also a timed_call function that will enforce a time limit on function calls.
Examples
Basic
from timedop import TimedOp
with TimedOp(label='Elapsed: ') as t:
# Some long operation?
busy_work()
print(t)
Output:
Elapsed: 0.24
Timed Call
from timedop import timed_call, TimedOut
def busy_work(stop, increment=1):
""" A dummy function, to simulate some work. """
start = 0
while start < stop:
start += increment
return start
# Allow 2 seconds for busy_work() to return:
try:
result = timed_call(
busy_work,
args=(100000000000, ),
kwargs={'increment': 2},
timeout=2
)
except TimedOut as ex:
print('Uh oh.')
print(ex)
else:
# Doesn't happen on my machine.
print(result)
Output:
Uh oh. Operation timed out. (busy_work(100000000000, increment=2), 2 seconds)
API
TimedOp
A TimedOp is just a timer that you can start and stop. You can initialise a TimedOp with an optional label, which will be used for str() or repr().
t = TimedOp(label='Time elapsed: ').start()
something()
print(t.stop())
A TimedOp can also be used as a context manager. The start method is called on __enter__, and stop is called on __exit__.
with TimedOp(label='Elapsed: ') as t:
something()
# Prints the time elapsed while inside the `with` block.
print(t)
TimedOp Methods:
elapsed: Return the number of seconds since the TimedOp started.
set_format(fmt): Set the default format string for the elapsed seconds and returns self. Default: '{:0.2f}'
sleep(seconds): Shortcut for time.sleep(seconds)
start: Starts the timer, and returns self.
stop: Stops the timer, and returns self.
TimedOut
An exception that is raised from timed_call, containing information about the timed function call such as:
self.func: The function object.
self.args: The arguments provided to the function.
self.kwargs: The keyword arguments provided to the function.
self.timeout: The timeout that was set for the timed call.
self.formatted: A string representing all of the above information. Used for str(TimedOut).
timed_call
timed_call(func, args=None, kwargs=None, timeout=DEFAULT_TIMEOUT)
Calls a function (func), and raises TimedOut if the function call takes more than timeout seconds. The default timeout is set to timedop.DEFAULT_TIMEOUT (4 seconds).
Returns the result from calling func(*args, **kwargs) unless it times out.
timed_call Arguments
func: The function to call.
args: A list/tuple of arguments to use when calling the function (func).
kwargs: A dict of keyword arguments to use when calling the function (func).
timeout: The number of seconds to wait before raising a TimedOut exception. This is set to timedop.DEFAULT_SECONDS by default (4 seconds).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.