brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Oct 30. 2021

Python 성능을 올리려면?

# Multiprocess

python이 느리다는 생각은 틀렸다.

python은 이제 빠르다.

하지만,

사용하는 사람의 언어적 베이스에 결과를 같이한다.


C, Rust 등을 함께 사용하면 빠르다.

이건 누구나 아는 사실인데,

나는 C, Rust를 잘 다루지 못한다.

읽을 수 있는 정도지 자유롭게 사용할 수 있도록 익숙하지 못하다.


그럼 어떻게 성능을 올릴 수 있는지 고민을 시작한다.

내가 가진 리소스(Resource) 내에서 방법을 찾아보자면,

정답은 Multiprocess 모듈을 적극적으로 활용하는 것이다.


좋은 모듈(Pandas, Numpy 등)을 활용하는 방법도 좋다.

하지만 어쩔수(?) 없이 직접 로직을 만들고 복잡한 연산, 파싱 등을 구현한다면

Python만으로는 좋은 성능을 얻을 수 없었다.


그래서,


https://docs.python.org/ko/3/library/multiprocessing.html#programming-guidelines


기억을 떠올려보면,

큰 데이터를 쪼개서 파일에 적고 subprocess를 통해서 하나의 파일로 묶었을 때,

하나의 프로세스로 진행하는 것보다

내가 가진 모든 CPU 파워를 활용할 수 있다면

좋은 성능을 확인 할 수 있었다.


C, Rust 를 배우는 것도 좋은 방법이다. 멋진 일이다.

새로운 언어를 배우면 프로그래밍을 직접 손위에서 구현할 때

다양하고 넓은 사고를 할 수 있다.


하지만,

하나의 언어를 깊이 이해하고 활용할 수 있는 자세도 중요하다.


Python 3.10 버젼에서 새로운 문법이 나타났다.

꼭 확인하고 왜? 이런 기능이 생겨났는지, 왜 이전에는 없었고 다른 무엇을 통해서 해당 기능을 구현했는지

공부가 필요하다.


https://www.youtube.com/watch?v=brq_Nvu2iDc


To. David



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari