Numba를 사용하여 간편한 가속 승리
6398 단어 python
Numba 및 @jit 데코레이터
Numba 및 @jit 장식사와 만나다.그것은 코드의 컴파일 방식을 바꾸어 통상적으로 성능을 향상시킬 것이다.특별한 도구
numba
를 설치할 필요도 없고, 매개 변수를 조정할 필요도 없습니다.네가 해야 할 일은:@jit
장식기 추가Numba
의 최적화 전후 코드 예시를 살펴봅시다.# numba_testing.py
import math
def compute():
# Bunch of dummy math operations
result = 0
for number in range(1_000_000):
double = number * 2
result += math.sqrt(double) + double
return result
이 코드의 유일한 목적은 계산을 하고 속도를 늦추는 것이다속도가 얼마나 느린지 봅시다. (Python3.8에서 기준 테스트를 완성했습니다. Introduction article on my blog 에서 전체 설정을 설명했습니다.)$ python -m timeit -s "from numba_testing import compute" "compute()"
1 loop, best of 5: 217 msec per loop
현재 코드에 @jit
를 추가합니다.함수의 주체는 변하지 않으며 유일한 차이점은 decorator이다.pip(pip install numba
로 Numba 패키지를 설치하는 것을 잊지 마세요.# numba_testing.py
import math
from numba import jit
@jit
def compute_jit():
# Bunch of dummy math operations
result = 0
for number in range(1_000_000):
double = number * 2
result += math.sqrt(double) + double
return result
실행 시간을 다시 측정해 보겠습니다.$ python -m timeit -s "from numba_testing import compute_jit" "compute_jit()"
200 loops, best of 5: 1.76 msec per loop
@jit decorator를 사용하면 우리의 속도가 120배 높아졌다(217/1.76=123.295)!이런 간단한 변화에 대해 말하자면, 이것은 거대한 진보이다!Numba의 추가 피쳐
@jit는 Numba 라이브러리에서 가장 일반적인 인테리어이지만 다른 인테리어를 사용할 수도 있습니다.
nopython
모드에서 Numba는 파이톤 해석기를 전혀 사용하지 않은 상태에서 코드를 실행하려고 시도합니다.그것은 더 큰 속도 향상을 가져올 수도 있지만, 이런 모드에서 컴파일링에 실패할 수도 있다.ufunc
와generalizedufunc
.Numba에는 다양한 구성 옵션이 있으며, 자신이 무엇을 하는지 알고 있으면 코드의 실행 시간을 더욱 높일 수 있습니다.다음을 수행할 수 있습니다.
nogil
GIL 비활성화Global Interpreter Lockcache
캐시 결과parallel
를 병행한다.Numba Examples
결론
Numba
는 아주 좋은 라이브러리로 최소한의 노력으로 프로그램의 속도를 현저하게 가속화할 수 있다.느린 기능을 설치하고 수식하는 데 1분도 걸리지 않는다는 것을 감안하여 코드를 빨리 개선하려면 (코드를 다시 쓸 필요가 없음), 이것은 당신이 검사할 수 있는 첫 번째 해결 방안 중의 하나입니다.코드:
누바를 어떻게 찾았지?
몇 년 전, 나는 에서 코드 도전을 할 때 처음으로 Numba를 알게 되었다.나는 그것을 계속 운행하게 하고 점심을 먹으러 가는 아주 나쁜 알고리즘을 썼다.내가 한 시간 후에 돌아왔을 때, 나의 프로그램은 아직 10퍼센트를 완성하지 못했다.나는 그것을 멈추고
@jit
장식기를 주 함수에 추가한 후에 그것을 다시 실행했다. 1분도 안 되어 결과를 얻었다.거의 아무 일도 하지 않고 놀라운 발전을 이루었다!이 이야기는 결코 경솔한 코드를 작성한 후에 해커를 사용하여 속도를 높일 수 있다는 것을 의미하지 않는다😉. 하지만 때로는 일회성 계산만 하면 된다.너는 완벽한 알고리즘을 작성하는 데 너무 많은 시간을 들이고 싶지 않다.아니면 더 좋은 알고리즘을 생각해 내지 못할 수도 있고, 알고리즘이 너무 느리다.Numba와 같은 도구를 사용하는 것은 응용 개선이 가장 빠르고 가장 간단한 방법 중의 하나일 수 있습니다!
Reference
이 문제에 관하여(Numba를 사용하여 간편한 가속 승리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/switowski/easy-speedup-wins-with-numba-4aod텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)