소스 검색

Add `Profile()` profiler (#4587)

* Add `Profile()` profiler

* CamelCase Timeout
modifyDataloader
Glenn Jocher GitHub 3 년 전
부모
커밋
bbfafeabdb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1개의 변경된 파일11개의 추가작업 그리고 2개의 파일을 삭제
  1. +11
    -2
      utils/general.py

+ 11
- 2
utils/general.py 파일 보기

@@ -39,8 +39,17 @@ cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with Py
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):
self.seconds = int(seconds)
self.timeout_message = timeout_msg

Loading…
취소
저장