본문 바로가기
IT/Python

파이선 3.11 에 대해서

by 성준하이 2022. 11. 14.
반응형

얼마전 파이선 시장에서 흥미로운 얘기가 나왔다.

바로 파이선 3.11 버전의 출시였다.

기존까지 계속해서 출시가 되어왔는데 왜 이번에는 이렇게 주목을 받느냐.

그것은 바로 아래와 같은 이유들 때문이다.

Faster CPython
  • 파이썬 3.11 버전은 이전 버전에 비해 (3.10) 전반적인 실행 속도가 10%~60% 정도, 평균적으로는 25% 정도 빨라졌다고 한다.
    설명만으로는 와닿지 않으니 한번 테스트를 해 보면 아래와 같다.
import time

def timer(function):
    def tictoc(*args, **kwargs):
        start = time.time()
        function(*args, **kwargs)
        print(f"Elapsed time: {(time.time() - start) * 1000} ms.")
    return tictoc

@timer
def append_list(n_iter):
    temp_list = []
    for i in range(n_iter):
        temp_list.append(i)

# On 3.10.0b3
>>> append_list(2500000)
Elapsed time: 204.00071144104004 ms.

# On 3.11.0a1
>>> append_list(2500000)
Elapsed time: 160.99786758422852 ms.

총 elapsed time 을 보면 확연한 차이를 볼수 있다.

 

빨라진 이유를 공식 홈페이지에서는 아래와 같은 이유로 설명을 한다.

  • 프레임 생성 프로세스를 간소화
  • C 스택의 프레임 공간을 넉넉하게 재사용하여 메모리 할당을 방지
  • 필수 정보만 포함하도록 내부 프레임 구조를 간소화했습니다. 이전에 프레임에는 추가 디버깅 및 메모리 관리 정보
Exception Groups and except *
  • 3.11 버전부터는 ExceptionGroup 이라는 빌트인 예외 타입이 추가되어, 여러 종류의 exception을 동시에 raise 하거나 handle 할 수 있게 되었다. 여러 동작을 동시에 실행시키거나, 여러 번의 실행 시도 후 에러 리포트를 해야 하는 등 많은 수의 서로 다른 예외를 한꺼번에 다루어야 하는 상황에 쓸 수 있는 도구이다.
Enriching Exceptions with Notes
  • Exception을 catch 하고 다시 re-raise 하거나, ExceptionGroup에 추가하는 경우 해당 exception의 에러 트레이스백에 추가적인 정보를 더 담을 수 있도록 BaseException.add_note 메서드가 추가되었다.
Include Fine Grained Error Locations in Tracebacks
  • 더욱 편리한 디버그를 위해 에러 발생 위치를 더 정확히 출력 해준다.

 

반응형

'IT > Python' 카테고리의 다른 글

파이선 리스트 중복 제거  (26) 2022.12.13
파일 복사  (40) 2022.11.30
cx_Oracle 이란?  (33) 2022.11.12
read_csv()  (37) 2022.11.08
반복문 역순으로 돌기  (42) 2022.10.28

댓글