>백엔드 개발 >파이썬 튜토리얼 >파이썬 실행 속도를 향상시키는 방법

파이썬 실행 속도를 향상시키는 방법

(*-*)浩
(*-*)浩원래의
2019-06-15 16:34:508444검색

지금 가장 인기 있는 언어라고 하면 파이썬을 빼놓을 수 없죠. 그러나 Python은 사용하기 쉽지만 속도가 약간 인상적입니다. 간단한 방법을 사용하여 Python을 C와 거의 비슷한 속도로 가속화하는 방법은 무엇입니까?

파이썬 실행 속도를 향상시키는 방법

오늘은 아기 numba에 대해 이야기해보겠습니다. 당신은 그것을 올바르게 읽었습니다. 그것은 numpy이거나 numba입니다. (추천 학습: Python 동영상 튜토리얼)

numba는 Python용 JIT(Just-In-Time) 컴파일러로 NumPy 배열과 함수는 물론 루프를 사용하는 코드에 가장 적합합니다. Numba를 사용하는 가장 일반적인 방법은 Numba가 컴파일하도록 함수에 적용할 수 있는 데코레이터 컬렉션을 이용하는 것입니다. Numba 장식 함수가 호출되면 "적시" 실행을 위해 기계어 코드로 컴파일되며 코드 전체 또는 일부가 기본 기계어 속도로 실행될 수 있습니다!

컴퓨팅 프로젝트에 직면했을 때 우리가 생각할 수 있는 가장 쉬운 방법은 직접 코딩하고 최종적으로 매우 긴 프로그램을 작성하는 것입니다. 결과적으로, 문제가 발생하면 문제를 찾는 데 많은 시간이 걸리는 경우가 많습니다.

이 문제를 해결하는 간단한 방법이 있는데, 다양한 기능을 정의하고 작업을 여러 개의 작은 부분으로 나누는 것입니다. 각 기능은 특별히 복잡하지 않고 작성 시 언제든지 확인할 수 있기 때문에 간결한 메인 프로그램에서 문제가 발생하면 문제를 쉽게 찾아 해결할 수 있습니다. 객체지향 프로그래밍의 아이디어는 함수를 기반으로 합니다.

함수를 작성한 후 데코레이터를 사용하여 더욱 강력하게 만들 수도 있습니다. 데코레이터 자체는 함수이지만 함수의 함수를 늘리는 것이 목적입니다. 예를 들어, 현재 시간을 출력하는 함수를 먼저 정의한 후, 시간 형식을 지정하는 함수를 정의하고, 앞 함수에 후자의 함수를 적용하는 것이 현재 시간을 특정 형식으로 출력하는 데 사용되는 데코레이터입니다.

> Numba의 장점

1. 단 한 줄의 코드로도 놀라운 결과를 가져올 수 있습니다.

2. 루프는 종종 과학 계산에서 Python의 속도를 제한합니다. 3. numpy, cmath 등과 같이 일반적으로 사용되는 과학 컴퓨팅 패키지와 호환됩니다.

4. ufunc를 생성할 수 있습니다.

5. 정확도를 보장합니다.

넘바 사용법

위에서 언급한 넘바의 장점을 토대로 하나씩 소개해드리겠습니다. 먼저 numba를 가져오세요

import numba as nb

코드 한 줄만 있으면 속도가 빨라지고 루프에 기적적인 효과가 있습니다

numba의 내장 함수 자체가 데코레이터이므로 앞에 @nb.jit()만 추가하면 됩니다. 정의한 기능을 사용하면 쉽게 시작할 수 있습니다. 합산 함수를 예로 들어 볼까요

# 用numba加速的求和函数@nb.jit()def nb_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum# 没用numba加速的求和函数def py_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum

속도 테스트

import numpy as np
a = np.linspace(0,100,100) # 创建一个长度为100的数组

%timeit np.sum(a) # numpy自带的求和函数
%timeit sum(a) # python自带的求和函数
%timeit nb_sum(a) # numba加速的求和函数
%timeit py_sum(a) # 没加速的求和函数

더 많은 Python 관련 기술 기사를 보려면

Python Tutorial

칼럼을 방문하여 알아보세요!

위 내용은 파이썬 실행 속도를 향상시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.