>백엔드 개발 >파이썬 튜토리얼 >Python에서 성능 최적화를 수행하는 방법

Python에서 성능 최적화를 수행하는 방법

伊谢尔伦
伊谢尔伦원래의
2017-06-28 13:33:151352검색

Python 비평가들은 Python이 비효율적이고 느리다고 주장하지만 사실은 아닙니다. Python 애플리케이션 속도를 높이려면 다음 6가지 팁을 시도해 보세요.

Python은 아주 적은 Python 코드로도 짧은 시간에 많은 일을 할 수 있고, Python은 멀티태스킹과 멀티프로세싱을 쉽게 지원하기 때문에 매우 멋진 언어입니다.

py

1. 중요한 코드는 확장 패키지에 의존할 수 있습니다.

Python은 많은 프로그래밍 작업을 단순하게 해주지만 매우 중요한 작업에 항상 최고의 성능을 제공하는 것은 아닙니다. C, C++ 또는 기계어 확장 패키지를 사용하여 중요한 작업을 수행하면 성능이 크게 향상될 수 있습니다. 이러한 패키지는 플랫폼에 따라 다릅니다. 즉, 사용 중인 플랫폼에 맞는 패키지를 사용해야 합니다. 간단히 말해서, 이 솔루션은 기본 호스트에 직접 프로그래밍해야만 얻을 수 있는 성능에 대한 대가로 일부 애플리케이션 이식성을 제공합니다. 개인 확장 라이브러리에 추가하는 것을 고려할 수 있는 다음 확장 패키지는 다음과 같습니다. Cython

PyInlne

PyPy
Pyrex

이 패키지에는 다양한 기능과 실행 방법이 있습니다. 예를 들어, Pyrex를 사용하면 Python에서 일부 메모리 작업을 쉽고 효율적으로 처리할 수 있습니다. PyInline을 사용하면 Python 애플리케이션에서 C 코드를 직접 사용할 수 있습니다. 비록 인라인 코드가 별도로 컴파일되지만 C 코드를 효율적으로 사용할 수 있다면 사용할 수 있습니다. 동시에 모든 것을 한 곳에서 처리할 수 있습니다.

2. 키워드 정렬 사용

실행 시 사용자 정의 정렬

함수

를 만드는 데 추가 시간을 소비하는 고대 Python 코드가 많이 있습니다. 정렬하는 가장 좋은 방법은 키워드와 기본 sort() 메서드를 사용하는 것입니다. 다음 예를 살펴보세요.

import operator
somelist = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(0))
somelist
#Output = [(1, 5, 8), (6, 2, 4), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(1))
somelist
#Output = [(6, 2, 4), (1, 5, 8), (9, 7, 5)]
somelist.sort(key=operator.itemgetter(2))
somelist
#Output = [(6, 2, 4), (9, 7, 5), (1, 5, 8)],
각 사례의 목록은 키워드 인수로 선택한 인덱스에 따라 정렬됩니다. 이렇게 하면

문자 문자열

및 숫자 정렬에도 동일하게 적용됩니다.

3. 루프 최적화

모든

프로그래밍 언어

는 루프 문의 최적화를 강조하며 Python도 마찬가지입니다. 루프를 더 빠르게 실행하기 위해 다양한 기술을 사용할 수 있지만 개발자가 종종 간과하는 한 가지 방법은 루프 내부에 점선 문자열을 사용하지 않는 것입니다. 다음 예의 경우:

lowerlist = ['this', 'is', 'lowercase']
upper = str.upper
upperlist = []
append = upperlist.append
for word in lowerlist:
    append(upper(word))
    print(upperlist)
    #Output = ['THIS', 'IS', 'LOWERCASE']
str.upper가 호출될 때마다 Python은 이 메서드의 값을 찾습니다. 하지만 평가 결과를

변수

에 넣으면 프로그램의 성능을 향상시킬 수 있습니다. 핵심은 Python 내에서 실행되는 루프 수를 줄이는 것입니다. Python은 이러한 인스턴스를 구문 분석하는 속도가 느리기 때문입니다.

4. 새 버전 사용

온라인에서 Python 정보를 검색하면 누구나 Python 버전 마이그레이션에 대한 수많은 정보를 찾을 수 있습니다. 일반적으로 Python의 각 버전은 Python이 더 빠르게 실행되도록 이전 버전에서 최적화되고 개선되었습니다. 제한 요소는 여러분이 선호하는 라이브러리가 새 버전의 Python에 맞게 개선되었는지 여부입니다.

새로운 함수 라이브러리를 사용하고 Python의 새 버전을 얻는 경우 코드가 계속 실행되는지 확인하고 애플리케이션을 확인하고 차이점을 수정해야 합니다.

그런 다음 애플리케이션이 새 버전에서 실행될 수 있는지 확인하면 새로운 기능의 업데이트를 놓칠 수 있습니다. 개선하고, 새 버전에서 애플리케이션을 구성하고, 문제 영역을 확인하고, 새로운 기능으로 업데이트 우선 순위를 지정하면 사용자는 이전 업그레이드에 비해 훨씬 더 향상된 성능을 경험할 수 있습니다.

5. 다양한 프로그래밍 방법을 시도해 보세요

애플리케이션을 만들 때마다 동일한 프로그래밍 방법을 사용하면 프로그램이 예상보다 느리게 실행됩니다. 분석 중에 몇 가지 작은 실험을 수행하십시오. 예를 들어, 사전에서 데이터 항목을 관리할 때 데이터 항목이 이미 존재하여 업데이트해야 하는지 안전한 방법을 사용하거나, 항목을 직접 추가한 후 해당 항목이 존재하지 않는 경우를 처리할 수 있습니다. 모두.

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    if char not in myDict:
        myDict[char] = 0
        myDict[char] += 1
        print(myDict)

위 코드는 일반적으로 myDict가 비어 있을 때 더 빠르게 실행됩니다. 하지만 myDict가 이미 데이터로 채워져 있는 경우 더 나은 선택 방법이 있습니다.

n = 16
myDict = {}
for i in range(0, n):
    char = 'abcd'[i%4]
    try:
        myDict[char] += 1
    except KeyError:
        myDict[char] = 1
    print(myDict)

두 경우 모두 {'d': 4, 'c': 4, 'b': 4, 'a': 4}를 출력합니다. , 유일한 차이점은 출력을 얻는 방법입니다. 고정관념에서 벗어나 새로운 프로그래밍 기술을 개발하면 프로그램 실행 속도가 빨라질 수 있습니다.

6. 크로스 컴파일러

개발자는 때때로 컴퓨터가 현재 응용 프로그램 언어를 인식하지 못하고 기계어 코드만 인식한다는 사실을 잊어버립니다. 프로그램을 실행하려면 사람이 읽을 수 있는 코드를 컴퓨터가 이해할 수 있는 코드로 변환하는 애플리케이션이 필요합니다. Python과 같은 한 언어로 프로그램을 작성한 다음 C++와 같은 다른 언어로 실행하는 것은 성능 측면에서 의미가 있습니다. 이는 애플리케이션으로 수행하려는 작업과 호스트 시스템이 제공할 수 있는 리소스에 따라 다릅니다.

흥미로운 크로스 컴파일러인 Nuitka는 Python을 C++ 코드로 변환할 수 있으며 그 결과 인터프리터에 의존하는 대신 기본 모드에서 애플리케이션을 실행할 수 있습니다. 플랫폼과 작업에 따라 성능이 크게 향상될 수 있습니다.

위 내용은 Python에서 성능 최적화를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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