Python 3.11 이론, 실습
2023. 7. 31. 08:53ㆍ개발/Python
728x90
반응형
Python 3.11
파이썬 3.11은 C파이썬(CPython)이 인터프리터 표준 버전이 된 패스터 C파이썬(Faster CPython) 프로젝트의 첫 번째 장점을 공개한 버전이다.
출처 : 코딩월드뉴스(https://www.codingworldnews.com)
파이썬 3.11 버전은 이전 버전에 비해 (3.10) 전반적인 실행 속도가 10%~60% 정도, 평균적으로는 25% 정도 빨라졌다고 한다
빨라진 이유 ?
- 함수 호출을 위한 스택 프레임을 효율적으로 설계해 더 적은 메모리를 사용.
- 파이썬 런타임에 필요한 핵심 모듈도 더 효율적으로 저장 및 로드.
변경된 점 ?
- 속도개선
- 10% ~ 60% 속도 증가
- 함수 호출 오버헤드 감소
- 메모리 사용량 감소
- 향상된 오류 정보
- 오류 보고 개선 (잘못된 곳 표시)
x = [1,2,3] z = x[1][0] # 기존 python 에러 File "C:\\Python311\\code.py", line 2, in <module> z = x[1][0] TypeError: 'int' object is not subscriptable # 3.11 python 에러 File "C:\\Python311\\code.py", line 2, in <module> z = x[1][0] ~~~~^^^ TypeError: 'int' object is not subscriptable
- 예외 개선
- 새로운 except*구문과 ExceptionGroup예외 형식 사용.
- “제로 코스트” 예외 : try/except블록의 기본 경로가 더 빠르며 사용량도 적어짐.
- 예외 포착 시간 10% 감소
- 형식 지정 개선
- stdlib의 TOML 읽기 전용 지원
- regex를 위한 원자 그룹과 속도 향상
- 정규 표현식 re 모듈이 3.11에서는 원자그룹을 지원하여 10% 속도 향상
- 표준 라이브러리의 ‘죽은 배터리’ 제거
Python 3.11 실습
환경
기술 버전
CentOS | 6 |
linux | |
Python | 3.11 |
Python | 3.6 |
설치
Python 3.6 CentOS 설치시 기본 설치
Pyhton 3.11 설치 방법
yum update
yum install openssl-devel bzip2-devel libffi-devel
yum install bison byacc cscope ctags cvs diffstat doxygen flex gcc gcc-c++ gcc-gfortran gettext git indent intltool libtool patch patchutils rcs redhat-rpm-config rpm-build subversion swig systemtap -y
yum groupinstall "Development Tools"
wget <https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz>
tar -xzf Python-3.11.0.tgz
cd Python-3.11.0.tgz
./configure --enable-optimizations
make altinstall
python3.11 -V
make 실패시
# 반복
make clean
./configure --enable-optimizations
make altinstall
Python3.6 vs Python3.11
Python3.6
import time
import sys
def append_list(n_iter):
temp_list = []
for i in range(n_iter):
temp_list.append(i)
if __name__ == '__main__':
print(sys.argv[1])
start = time.time()
append_list(int(sys.argv[1]))
print("Elapsed time: {0} ms".format((time.time() - start)*1000))
실행결과
python test.py 100000
Elapsed time: 38.995981216430664 ms
Python3.11
import time
import sys
# 데코레이터 사용
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)
if __name__ == '__main__':
print(sys.argv[1])
append_list(int(sys.argv[1]))
실행결과
python test.py 100000
Elapsed time: 16.49618148803711 ms
결과
- 2배 이상의 성능을 보여준다.
728x90
반응형
'개발 > Python' 카테고리의 다른 글
FastAPI - 설치 (0) | 2023.07.31 |
---|---|
Python - Uvicorn (0) | 2023.07.31 |
Python - FastAPI (0) | 2023.07.31 |
Python Framework (0) | 2023.07.31 |
Python 기초 이론 (0) | 2023.07.31 |