|
|
|
|
|
|
|
|
os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads |
|
|
os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class timeout(contextlib.ContextDecorator): |
|
|
|
|
|
# Usage: @timeout(seconds) decorator or 'with timeout(seconds):' context manager |
|
|
|
|
|
|
|
|
class Profile(contextlib.ContextDecorator): |
|
|
|
|
|
# Usage: @Profile() decorator or 'with Profile():' context manager |
|
|
|
|
|
def __enter__(self): |
|
|
|
|
|
self.start = time.time() |
|
|
|
|
|
|
|
|
|
|
|
def __exit__(self, type, value, traceback): |
|
|
|
|
|
print(f'Profile results: {time.time() - self.start:.5f}s') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Timeout(contextlib.ContextDecorator): |
|
|
|
|
|
# Usage: @Timeout(seconds) decorator or 'with Timeout(seconds):' context manager |
|
|
def __init__(self, seconds, *, timeout_msg='', suppress_timeout_errors=True): |
|
|
def __init__(self, seconds, *, timeout_msg='', suppress_timeout_errors=True): |
|
|
self.seconds = int(seconds) |
|
|
self.seconds = int(seconds) |
|
|
self.timeout_message = timeout_msg |
|
|
self.timeout_message = timeout_msg |