훌륭한 프로그래머로서 파이썬 코드 속도를 높이세요#PROTIPS⚡

Python은 매우 인기 있고 배우기 쉬운 언어입니다. 그러나 속도에 관해서는 정말 느립니다. 다음은 좋은 파이썬 프로그래머로서 파이썬 코드의 속도를 높일 수 있는 방법에 대한 몇 가지 팁입니다.


#1. 기본 데이터 구조 이해



사전 및 집합은 해시 테이블을 사용하므로 작동 방식을 알기 위해 O(1) 조회 성능 읽기The Hitchhiker’s Guide를 확인하십시오.
모든 주요 데이터 유형에 대한 성능 치트 시트는 또는 Time Complexity을 참조하십시오.

it is often a good idea to use sets or dictionaries instead of lists
in cases where:

  • The collection will contain a large number of items
  • You will be repeatedly searching for items in the collection
  • You do not have duplicate items.


#2. 문자열 연결



문자열은 Python에서 변경할 수 없습니다.

이 사실은 종종 초심자 Python 프로그래머에게 번쩍이고 물기 때문에 불변성은 몇 가지 장점과 단점을 제공합니다.



  • in Advantage, strings can be used as keys in dictionaries and individual copies can be shared among multiple variable bindings. (Python automatically shares one- and two-character strings.)
  • as a disadvantage, you can't say something like, >"change all the 'a's to 'b's" in any given string. Instead, you have to create a new string with the desired properties. This continual copying can lead to significant inefficiencies in Python programs.


이것을 피하십시오:

s = ""
for substring in list:
    s += substring


사용:

s = "".join(list)


대신에. 전자는 큰 끈을 만드는 동안 매우 일반적이고 치명적인 미스터리입니다. 마찬가지로 다음 대신 문자열의 비트를 순차적으로 생성하는 경우:

s = ""
for x in list:
    s += some_function(x)


목록 이해력 사용

slist = [some_function(elt) for elt in somelist]
s = "".join(slist)


피하다:

out = "<html>" + head + prologue + query + tail + "</html>"


사용:

out = "<html>%s%s%s%s</html>" % (head, prologue, query, tail)
#or
out = f"<html>{head}{prologue}{query}{tail}</html>"
#or you can use 
out = "<html>{}{}{}{}</html>".format(head,prologue,query,tail)



#3 map() 및 목록 이해는 황금 열쇠입니다!!!



Python은 몇 가지 반복 구문을 지원합니다. for 문은 가장 일반적으로 사용됩니다. 루프의 본문이 단순하면 for 루프 자체의 인터프리터 오버헤드가 상당한 양의 오버헤드가 될 수 있습니다. 여기서 map 기능이 편리합니다. map은 for를 C 코드로 변환합니다. 유일한 제한 사항은 맵의 "루프 본문"이 함수 호출이어야 한다는 것입니다. 목록 이해는 지도를 동등하게 사용하는 것만큼 빠르거나 빠릅니다.

newlist = []
for word in oldlist:
    newlist.append(word.upper()) #slow


map 함수를 사용하여 for 루프를 컴파일된 C 코드로 변환할 수 있습니다.

newlist = map(str.upper, oldlist) #fast


좋은 속도 결과를 위해 목록 이해를 사용할 수도 있습니다!

newlist = [s.upper() for s in oldlist]



#4 Lazy 라이브러리 작업



import 문은 코드의 어디에서나 실행할 수 있습니다. 가시성을 제한하거나 초기 시작 시간을 줄이기 위해 함수 내부에 배치하는 것은 유용한 결정입니다.

Python's interpreter is optimized to not import the same module multiple times, repeatedly executing an import statement can seriously affect your speed.



피하다:

import tensorflow


사용:

from tensorflow.keras.layers import Dense, Flatten, Conv2D


지연 가져오기를 수행하는 좋은 방법은 다음과 같습니다.

email = None

def parse_email():
    global email
    if email is None:
        import email
    ...



#5.필요할 때 인쇄 사용



Print 문은 출력을 터미널로 리디렉션하기 때문에 가장 필요할 때 Print 문을 사용하십시오. 콘솔에 물건을 인쇄하는 것은 차단 작업입니다. 필요한 경우에만 인쇄물을 포함합니다. 일단 인쇄 코드를 제거하면 더 빨리 실행됩니다.


#6.내장 모듈을 더 많이 사용하세요!



Python에는 C로 구현된 많은 내장 함수가 있으며 매우 빠르고 잘 유지됩니다. 우리는 적어도 이러한 함수 이름에 익숙해야 하고 어디에서 찾을 수 있는지 알아야 합니다(일반적으로 사용되는 계산 관련 함수는 abs(), len(), max(), min(), set(), sum()입니다.

다음은 당신이 찾고 있는 몇 가지 유용한 링크입니다.



When to Use a List Comprehension in Python

Advantages and Disadvantages of Python Programming Language


항상 그렇듯이 피드백, 건설적인 비판, 프로젝트에 대한 경청을 환영합니다. , 그리고 my website 에서도 연락할 수 있습니다.

좋은 웹페이지 즐겨찾기