나는 항상 다음과 같이 시간을 계산하기 위해 코드를 읽습니다.
%timeit function()
여기서 "%"가 무엇을 의미하는지 설명해 주시겠습니까?
"%"는 항상 문자열에서 무언가를 바꾸는 데 사용됩니다. 예를 들어 % s는 문자열을 바꾸고 % d는 데이터를 바꾸는 것을 의미합니다.하지만이 경우에 대해 전혀 모릅니다.
답변:
%timeit
특정 코드 조각 (단일 실행 문 또는 단일 메서드)의 시간을 측정하는 데 사용할 수 있는 ipython 매직 함수입니다.
문서에서 :
% timeit
Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
예를 들어 using xrange
이 using보다 빠른지 확인 range
하려면 다음을 수행하면됩니다.
In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop
In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop
그리고 당신은 그들에 대한 타이밍을 얻을 것입니다.
의 주요 장점 %timeit
은 다음 과 같습니다.
당신이 것을 하지 않는 수입에이 timeit.timeit
표준 라이브러리에서 , 그리고 그림에 코드를 여러 번 실행하는 밖으로 더 나은 방법입니다.
% timeit은 총 2 초의 실행 창을 기준으로 코드에 필요한 실행 횟수를 자동으로 계산합니다.
timeit.timeit
timeit이 작동하는 다른 환경에서 빌드 된 변수를 빌드하는 경우와 같이 전체 코드 스 니펫을 전달하지 않고도 현재 콘솔 변수를 사용할 수도 있습니다 .
%timeit function()
timer.timeit
-그게 실제 모듈 이름인가요?
10000 loops, best of 3: 29.6 µs per loop
은 다음과 같이 해석 될 수 있습니다. (1.) 표현식이 총 시간을 얻기 위해 10000 번 실행되고 (2.) 총 시간을 10000으로 나누어 "루프 당"시간을 얻고 (3.) 총 시간 계산이 완료됩니다. 총 3 회 중 3 회, 마지막으로 (4.), 최소 총 시간 (일명 "최고 3")이 출력으로 사용됩니다. 내 해석이 맞습니까, 예 / 아니요?
이것은 iPython에서 라인 매직 으로 알려져 있습니다. 그들은 그들의 주장이 현재 줄의 끝까지 만 확장된다는 점에서 독특하고 매직 자체는 실제로 명령 줄 개발을 위해 구조화되어 있습니다. timeit
코드 실행 시간을 측정하는 데 사용됩니다.
사용할 수있는 모든 마법을보고 싶다면 다음을 입력하면됩니다.
%lsmagic
라인 매직과 셀 매직의 목록을 가져옵니다.
여기 문서에서 몇 가지 추가 마법 정보 :
IPython에는 Python 구문과 직교하고 새로운 명령으로 사용자가 확장 할 수있는 미니 명령 언어를 효과적으로 제공하는 마법 이라고하는 명령 시스템이 있습니다. 매직은 대화 형으로 입력하기위한 것이므로 인수를 구분하는 데 공백을 사용하고 옵션을 위해 대시를 사용하고 명령 줄 환경에서 일반적인 기타 규칙을 사용하는 것과 같은 명령 줄 규칙을 사용합니다.
라인 모드 인지 셀 모드 인지에 따라 를 사용하는 두 가지 방법이 있습니다 %timeit
. 귀하의 질문은 첫 번째 방법을 설명합니다.
In [1]: %timeit range(100)
대
In [1]: %%timeit
: x = range(100)
:
IPython은이를 가로 채고,이를 내장 매직 명령이라고합니다. 목록은 다음과 같습니다. https://ipython.org/ipython-doc/dev/interactive/magics.html
https://ipython.org/ipython-doc/dev/config/custommagics.html과 같은 사용자 지정 매직을 만들 수도 있습니다.
귀하의 timeit
위치는 https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit
%% timeit에 대해 매우 미묘한 점 을 추가하고 싶었습니다 . 셀 에서 "마법"을 실행하면 오류가 발생합니다.
UsageError : Line magic function %%timeit
not found
... %% timeit 위에 코드 / 주석 행이있는 경우. 즉, %% timeit이 셀의 첫 번째 명령인지 확인하십시오.
나는 모든 전문가들이 이런 말을 할 작은 요점이라는 것을 알고 있지만 마술을 시작하는 젊은 마법사를 위해 내 절반을 더하고 싶었습니다.