Offcanvas

Timeit

파이썬 코드 프로파일링을 위한 6가지 유용한 라이브러리

모든 프로그래밍 언어에는 두 가지 속도가 있다. 개발 속도, 그리고 실행 속도다. 파이썬(Python)은 전통적으로 빠른 실행보다는 빠른 개발에 중점을 두는 언어다. 파이썬 코드는 대부분의 경우 충분히 빠르지만 가끔 그렇지 않을 때도 있다. 그럴 때는 속도가 떨어지는 위치와 이유를 파악해 조치를 취해야 한다.   소프트웨어 개발은 물론 엔지니어링 전반적으로 통용되는 격언으로 “추정하지 말고 측정하라”는 말이 있다. 소프트웨어에서 무엇이 잘못됐는지 추정하곤 하지만 결코 좋은 방법은 아니다. 애플리케이션 속도를 높이기 위해 가장 먼저 사용해야 하는 도구는 실제 프로그램 성능에 대한 통계다. 파이썬에는 애플리케이션을 프로파일링하고 속도가 느린 부분을 파악하는 데 사용할 수 있는 패키지가 풍부하다. 표준 라이브러리에 포함된 간단한 도구부터 실행 중인 애플리케이션에서 통계를 얻기 위한 복잡 정교한 프레임워크에 이르기까지 다양한 도구가 있다. 이번 기사에서는 가장 중요한 5가지 도구에 대해 살펴본다. 모두 크로스 플랫폼(cross-platform)이며 파이파이(PyPI) 또는 파이썬 표준 라이브러리에서 즉시 사용할 수 있다.  타임(Time), 타임잇(Timeit) 실행 속도가 몇 초 또는 몇 분 정도인 두 코드 스니펫 간의 시간을 프로파일링하는 것이 전부라면 스톱워치만 있어도 충분하다. 파이썬 표준 라이브러리에는 스톱워치 기능을 하는 두 가지 함수가 제공된다. 타임 모듈의 perf_counter 함수는 운영체제의 고분해능 타이머를 호출해 임의의 타임스탬프를 구한다. time.perf_counter를 작업 전후에 한 번씩 호출해 둘 사이의 차이를 구할 수 있다. 야단스럽지 않게, 낮은 오버헤드로 코드 시간을 측정하는 방법이다. 타임잇 모듈은 파이썬 코드에 대한 실제 벤치마킹과 비슷한 작업을 수행한다. timeit.timeit 함수는 코드 스니펫을 여러 번 실행하고(기본값은 100만 번), 소요된 총 시간을 측정한다. 타이트한 루프에서 단일 작...

파이썬 Python 타임잇 Timeit c프로파일 cProfile 팔란티어 Palanteer 파이인스트루먼트 Pyinstrument 파이-스파이 Py-spy 야피 Yappi

2021.08.03

모든 프로그래밍 언어에는 두 가지 속도가 있다. 개발 속도, 그리고 실행 속도다. 파이썬(Python)은 전통적으로 빠른 실행보다는 빠른 개발에 중점을 두는 언어다. 파이썬 코드는 대부분의 경우 충분히 빠르지만 가끔 그렇지 않을 때도 있다. 그럴 때는 속도가 떨어지는 위치와 이유를 파악해 조치를 취해야 한다.   소프트웨어 개발은 물론 엔지니어링 전반적으로 통용되는 격언으로 “추정하지 말고 측정하라”는 말이 있다. 소프트웨어에서 무엇이 잘못됐는지 추정하곤 하지만 결코 좋은 방법은 아니다. 애플리케이션 속도를 높이기 위해 가장 먼저 사용해야 하는 도구는 실제 프로그램 성능에 대한 통계다. 파이썬에는 애플리케이션을 프로파일링하고 속도가 느린 부분을 파악하는 데 사용할 수 있는 패키지가 풍부하다. 표준 라이브러리에 포함된 간단한 도구부터 실행 중인 애플리케이션에서 통계를 얻기 위한 복잡 정교한 프레임워크에 이르기까지 다양한 도구가 있다. 이번 기사에서는 가장 중요한 5가지 도구에 대해 살펴본다. 모두 크로스 플랫폼(cross-platform)이며 파이파이(PyPI) 또는 파이썬 표준 라이브러리에서 즉시 사용할 수 있다.  타임(Time), 타임잇(Timeit) 실행 속도가 몇 초 또는 몇 분 정도인 두 코드 스니펫 간의 시간을 프로파일링하는 것이 전부라면 스톱워치만 있어도 충분하다. 파이썬 표준 라이브러리에는 스톱워치 기능을 하는 두 가지 함수가 제공된다. 타임 모듈의 perf_counter 함수는 운영체제의 고분해능 타이머를 호출해 임의의 타임스탬프를 구한다. time.perf_counter를 작업 전후에 한 번씩 호출해 둘 사이의 차이를 구할 수 있다. 야단스럽지 않게, 낮은 오버헤드로 코드 시간을 측정하는 방법이다. 타임잇 모듈은 파이썬 코드에 대한 실제 벤치마킹과 비슷한 작업을 수행한다. timeit.timeit 함수는 코드 스니펫을 여러 번 실행하고(기본값은 100만 번), 소요된 총 시간을 측정한다. 타이트한 루프에서 단일 작...

2021.08.03

IDG 설문조사

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.

10.4.0.31