본문 바로가기
반응형

Python8

[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] 비동기 프로그래밍 | LIM 파이썬에서 비동기 프로그래밍을 하기 위해서는 이벤트 루프와 코루틴 을 알고 있어야 한다. 📌 이벤트 루프(Event Loop) 이벤트 루프는 작업들을 루프를 돌면서 하나씩 실행시키는 역할을 한다. Callback Event Queue에서 하나씩 꺼내서 동작시키는 Loop를 말한다. 즉 이 이벤트 루프를 이용해서 비동기 방식으로 동시성을 지원하는 것이다. 만약, 실행된 작업이 특정한 데이터를 요청하고 응답을 기다려야 한다면, 이 작업은 다시 이벤트 루프에 통제권을 넘겨준다. 통제권을 받은 이벤트 루프는 다음 작업을 실행하게 된다. 그리고 응답을 받은 순서대로 멈췄던 부분분터 다시 통제권을 가지고 작업을 마무리 한다. 📌 코루틴(Cooperative Routine) 위에 이러한 작업이 파이썬에서는 코루틴으로.. 2022. 7. 9.
[Python] functools 의 partial | LIM 🧐 functools 모듈이란? functools 모듈을 몇 가지 고위 함수를 통합한다. 그 중 가장 널리 알려진 함수가 reduce() 함수이다. functools에서 제공하는 나머지 함수 중 partial() 및 이의 변형인 partialmethod() 함수가 매우 유용하다고 한다. ✔️ run_in_executor 에 이용한 functools.partial functools.partial()은 함수를 부분적으로 실행할 수 있게 해주는 고위함수이다. 어떤 함수가 있을 때 partial()을 적용하면 원래 함수의 일부 인수를 고정한 콜러블을 생성한다. 이 기법은 하나 이상의 인수를 받는 함수를 그보다 적은 인수를 받는 콜백 함수를 사용하는 API에 사용하고자 할 때 유용하다. 예를 들어 비동기 처리할 .. 2022. 7. 9.
[Python] 예외처리 try, except, finally and raise | LIM 📌 python의 예외처리 1. try & except 우리가 대표적으로 예외처리를 하는 방법이다. def exception_test(self): try: abc = 321 abc.lower() except Exception as e: print("err message:", e) err message: 'int' object has no attribute 'lower' 2. try & except & finally finally 까지 추가하면 에러 발생과 관계 없이 항상 실행되는 코드를 추가로 구성할 수 있다. def exception_test_with_finally(self): try: abc = 321 abc.lower() except Exception as e: print("err message:".. 2022. 6. 24.
[Python] 추상 메서드 ABC의 정의와 사용 | LIM python의 ABC 클래스는 Base 클래스를 상속받는 파생 클래스가 반드시 Base 클래스의 메서드를 명시적으로 선언해서 구현하도록 강제하는 추상화 클래스 기능이다. 따라서 상속받는 클래스에서 메서드를 구현하지 않으면 에러가 발생한다. 이 추상메서드를 이해하기 전에 먼저 상속과 다형성에 대한 개념을 잡아보도록 하자. 📌 상속(Inheritance)과 다형성 📚상속 OOP의 가장 강력한 기능중 하나인 상속은 클래스의 재사용성을 높임으로서, 코드의 반복에 따른 유지 보수 비용을 낮추는데 큰 역할을 했다. 예시) Country의 속성을 상속받은 Korea 클래스이다. 오버라이딩한 show 메서드에서는 Korea에서 정의한 대로 출력되고 나머지의경우 오버라이딩 되지 않아서 부모 클래스에서 정의된대로 출력되게.. 2022. 6. 19.
반응형