소개 Python에서 함수는 일급 객체 함수(First-Class Function) 입니다. 일급 객체 함수는 함수를 변수처럼 사용할 수 있다는 의미입니다. argument 로 넘겨줄수 있으며, return 할수도 있고, assign도 할 수 있습니다. 이러한 특징을 이용해서 Closure 을 만들 수 있는데요. Closure가 무엇인지? 언제쓰면 좋은지? 어떻게 구현하는지?에 대해서 정리를 해보도록 하겠습니다. Closure 가 무엇인가? Closure는 일종의 프로그래밍 기법입니다. 위키페디아에서 말하기를 […]
Python Decorators 데코레이터 구현
소개 Python open source 나 framework 코드를 보면 함수 앞에 @를 통해 사용되는 Decorators 를 많이 볼 수 있습니다. 이 데코레이터를 이용하면 보다 효율적인 코딩을 할 수 있는데요. 이것이 무엇인지, 언제 사용하는 것인지, 어떻게 사용하는 것인지를 정리 해볼까 합니다. Decorators 가 무엇인가? Python에서 함수(Function)는 일급함수(First-class Functions)입니다. 일급함수가 무엇인가요?? 일급함수는, 그리고 파이썬에서 함수는 중첩 함수로도 만들수가 […]
Python Multiprocessing (파이썬 멀티프로세싱)
소개 Python 에서 병렬처리를 위한 threading 과 Multiprocessing 중에서 이번에는 Multiprocessing 에 대해서 정리해보고자 합니다. 앞선 포스팅을 통해서 각각의 특징을 정리해보았었는데요. 다시 한번 간단히 정리해보자면, Multiprocessing 은 CPU bound 작업에서 보다 더 유리한 면을 가지고 있습니다. CPU bound 작업이라고 하면 I/O bound (Networking, File upload, download )작업과 대조되는 작업으로, CPU 사용이 더욱 많은 작업을 말합니다. […]
Python Thread 파이썬 쓰레드
소개 Python 에서 Threading 은 I/O bound 작업에 보다 더 적합하다고 앞선 포스팅에서 말씀드렸는데요. 이번엔 직접 Threading 을 구현해 보면서 사용법을 정리해볼까 합니다. Threading 모듈을 활용한 old 한 방법을 먼저 살펴보고, python 3.2 버전부터 등장한 concurrent.futures 모듈을 활용한 좀 더 간편한 thread 사용에 대해서 정리를 해볼까 합니다. Threading 모듈 이용(Old 방식) threading 모듈을 이용한 old […]
Python Threading(쓰레딩) vs Multiprocessing(멀티프로세싱) 비교
소개 프로그램을 만들다 보면 네트워킹 작업이나 파일시스템 관련 I/O 작업등과 같이 synchronous 하게 작업하지 않아도 되는 로직들이 많이 생기게 됩니다. 프로그램 성능 향상을 위해서는 이러한 작업들은 식별하여 병렬 처리를 하도록 로직 처리를 하는 것이 좋은 방법이 될 수 있어요. Python 에서는 이러한 병렬 처리를 위해서 threading 과 multiprocessing 을 지원하고 있습니다. 각각은 무엇이고, 어떻게 동작을 […]