본문 바로가기

파이썬

[Python]#27 Python 코드 최적화를 위한 몇 가지 방법_1

Python은 웹 응용 프로그램, 데이터 분석, 기계 학습 및 인공 지능 프로젝트 개발에 일반적으로 사용되는 널리 사용되는 고급 프로그래밍 언어입니다. Python은 단순성과 사용 용이성으로 유명하지만 다른 프로그래밍 언어에 비해 느린 것으로도 유명합니다. 다행스럽게도 개발자가 성능을 위해 Python 코드를 최적화하기 위해 채택할 수 있는 몇 가지 기술과 방법이 있습니다.

 

이 블로그 게시물에서는 더 나은 성능을 위해 Python 코드를 최적화하기 위한 몇 가지 필수 팁과 요령을 다룰 것입니다.

 

1) List Comprehension 및 Generator 표현식 사용
리스트 내포와 제너레이터 표현식은 각각 파이썬에서 리스트와 제너레이터를 만드는 간결한 방법입니다. for 루프를 사용하고 목록에 추가하는 것보다 더 효율적입니다. 

예시 )

# using for loop
squares = []
for x in range(10):
    squares.append(x**2)
    
# using list comprehension
squares = [x**2 for x in range(10)]

# using generator expression
squares = (x**2 for x in range(10))

위의 예에서 목록 내포 및 생성기 표현식은 빈 목록을 만들고 추가하는 것을 피하기 때문에 for 루프를 사용하는 것보다 더 효율적입니다

Output:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

2) 전역 변수를 피하십시오
Python의 전역 변수는 함수 외부에서 정의되는 변수입니다. 전역 변수가 함수 내에서 사용될 때 Python은 전역 네임스페이스에서 변수를 조회해야 하므로 함수 실행 속도가 느려질 수 있습니다. 전역 변수를 사용하는 대신 변수를 함수의 인수로 전달하거나 함수 내에서 변수를 정의하십시오.

 

3) 내장 함수 사용
Python에는 속도와 효율성을 위해 최적화된 여러 내장 함수가 있습니다. 예를 들어 내장 함수는 목록에서 메서드를 len() 사용하는 것보다 훨씬 빠릅니다. count() 가능한 경우 항상 내장 함수를 사용하십시오.

 

4) join()문자열 연결 방법 사용
문자열 연결은 특히 많은 수의 문자열을 연결할 때 Python에서 성능 병목 현상이 될 수 있습니다. +연결에 연산자를 사용하는 대신 join() 메서드를 사용하십시오. 이 join() 방법은 중간 문자열을 생성하지 않기 때문에 더 효율적입니다. 

예시 )

# using the + operator
s = ''
for i in range(10):
    s += str(i)
    
# using the join() method
s = ''.join(str(i) for i in range(10))

위의 예에서 join()메서드를 사용하는 것이 연산자를 사용하는 것보다 훨씬 빠릅니다 +.

Output:

0123456789

5) 지역 변수 사용
지역 변수는 함수 내에서 정의되는 변수입니다. 로컬 변수가 함수 내에서 사용되면 Python은 전역 네임스페이스에서 변수를 조회할 필요가 없으므로 함수 실행 속도를 높일 수 있습니다. 가능하면 항상 지역 변수를 사용하십시오.

 

6) enumerate()목록 반복에 사용
Python에서 목록을 반복할 때 각 요소의 인덱스를 추적해야 하는 경우가 종종 있습니다. 카운터 변수와 함께 for 루프를 사용하는 대신 enumerate() 함수를 사용하십시오. 이 함수는 목록의 각 요소에 대한 enumerate() 쌍을 생성하는 반복자를 반환합니다. (index, value)

예시 )

# 카운터 변수와 함께 for 루프 사용
fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
    print(i, fruits[i])
    
# enumerate() 함수 사용
fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits):
    print(i, fruit)

위의 예에서 enumerate()카운터 변수와 함께 for 루프를 사용하는 것보다 함수를 사용하는 것이 더 효율적이고 읽기 쉽습니다.

이어서 최적화 할 수 있는 방법

[Python]#28 Python 코드 최적화를 위한 몇 가지 방법_2가 계속됩니다.