본문 바로가기
반응형

Language/Python19

[Python] Module dependcy 새로운 관리 툴 Poetry | LIM 1. Poetry 도입이유 2. Poetry 란 3. Poetry 설치 및 사용 4. Pycharm에서 Poetry 환경 구축 5. Docker 를 이용한 Poetry 개발 환경 세팅 6. Poetry 추가 옵션 👩‍💻 Poetry 도입 이유 회사 내에서 여러 프로젝트를 관리하다 보니 파이썬 라이브러리들의 버전때문에 문제가 생기는 경우가 꽤 있었다. 특히 tensorflow, keras, numpy 이 친구들.. 또한, 테스트하려고 깔아놓은 라이브러리들 관리가 안되어 굳이 사용하지도 않는 라이브러리들도 같이 개발 및 운영환경에 올라가기 일쑤였다. 이러한 문제를 해결해줄 수 있는게 파이썬 신생 의존성 관리자 Poetry 였다. 실제로 써보니 좋은 점이 꽤 많았다. 🧐 Poetry 란 Poetry 는 Pip.. 2022. 12. 17.
[Python] Staticmethod vs Classmethod | LIM 클래스에서 메서드를 생성할 때 크게 3가지로 생성할 수 있다. ✅ 인스턴스 메서드 ✅ @staticmethod (정적 메서드) ✅ @classmethod (클래스 메서드) ✔️ 먼저, 가장 기본인 인스턴스 메서드에 대해 알아보자 클래스 하위 메서드에 아무런 데코레이터 없이 선언한 메서드가 인스턴스 메서드이다. 첫 번째 매개변수로 클래스의 인스턴스가 넘어오게 되고, 그 이름을 self라고 한다. 즉 self는 클래스를 가리킨다고 생각하면 된다. 인스턴스 메서드는 이 self 를 통해 인스턴스 속성(attribute)에 접근하거나 다른 인스턴스 메서드를 호출할 수 있다. 뿐만 아니라 self 를 통해 클래스 속성에 접근하거나 클래스 메서드를 호출할 수도 있다. class Company: ceo = 'Ruby.. 2022. 12. 16.
[Python] 일급객체(First Class Object)란? | LIM 파이썬에서 모든 함수는 일급이다. 프로그래밍 언어 이론가들은 다음과 같은 작업을 수행할 수 있는 프로그램 객체를 '일급 객체'로 정의한다. 함수를 다른 변수와 동일하게 다루는 언어를 일급 함수를 가졌다 라고 표현한다. - 데이터 구조체의 변수나 요소에 할당할 수 있다. - 함수 인수로 전달할 수 있다. - 함수 결과로 반환할 수 있다. 하나씩 예를 들어 보자 1. 데이터의 구조체의 변수나 요소에 할당할 수 있다. mult 라는 변수에 square 함수를 할당하면 mult 변수와 square 함수는 동일한 메모리 주소를 출력한다. 2. 함수 인수로 전달할 수 있다. 3. 함수 결과로 반환할 수 있다. 추후 이 개념은 python의 decorator 와도 연관이 있다. 함수가 일급객체이기 때문에 할 수 있.. 2022. 12. 11.
[Python] Super() 기초 개념 및 활용 예제 | LIM ✔️ Python Super 란 Super() 함수는 super class, 상속받은 부모 클래스를 호출하는 함수입니다. Super 를 설명하기 전 필수 개념인 상속을 잠깐 살펴보고 넘어가보도록 하겠습니다. 다음과 같이 ParentClass와 ChildClass 두개의 클래스를 만들었을 때, (name, number) argument 가 중복되게 됩니다. 이런 경우 ChildClass 가 ParentClass 를 상속받아 동일한 코드가 반복되는 것을 피할 수 있습니다. 하지만 코드를 작성 후 다음과 같이 실행하였을 때, 다음과 같이 에러가 발생하게 됩니다. score 는 잘 나오나 name과 number를 ChildClass 클래스에서 선언해주지 않았기 때문에 생기는 문제입니다. 이 때 Super() 를.. 2022. 11. 8.
[Python] MultiProcessing map() vs imap() | LIM 1. Python Multiprocessing에 대한 간단한 설명 2. Pool.map() 과 Pool.imap() 의 차이 3. Pool.imap_unordered() 🖥 Python MultiProcessing 멀티 프로세싱을 활용하면 여러 작업을 별도의 프로세스를 생성 후 병렬처리해서 더 빠르게 결과를 얻어낼 수 있다. 다만 멀티 프로세싱은 메모리 사용률이 높아진다는 단점이 존재한다. 멀티 프로세싱과 멀티 스레드 두 가지 방법이 존재하는데, 파이썬에서는 GIL(Global Interpreter Lock) 정책 때문에 cpu 위주의 작업에서는 멀티 스레딩은 오히려 성능을 떨어뜨린다. 즉 정리하자면, 쓰레드는 가볍지만 파이썬의 GIL정책으로 인해 I/O 처리를 하는 경우에만 주로 효과적이고 프로세스는 .. 2022. 9. 19.
[Python] 코루틴으로 짜여있지 않은 함수 비동기적으로 이용하기(feat.run_in_executor) | LIM 파이썬에서 비동기 처리를 할 때 await 뒤에 오는 함수 역시 코루틴으로 작성되어 있어야 비동기적인 작업이 가능하다. 비동기로 짜여져 있는 라이브러리도 있으나 보통은 비동기를 고려하지 않고 짜여진 라이브러리가 대부분이다. 그럴 때 event loop 의 run_in_executor 함수를 이용하면 동기적인 함수를 비동기적으로 이용할 수 있다. ✔️ 먼저, asyncio.get_event_loop()를 활용해서 현재 이벤트 루프를 받아온 후 이벤트 루프의 run_in_executor 를 사용한다. run_in_executor는 다음과 같이 정의되어 있다. def run_in_executor(self, executor, func, *args): self._check_closed() if self._debu.. 2022. 7. 14.
반응형