이번 포스팅에서는 CPython의 소스코드를 통해서 Python List가 어떻게 동작하는지 알아봅니다. Python List를 C언어의 Array와 사뭇 다릅니다 Python List C Array Type 무관 Type 고정 Element크기 고정 Type에 따라 변함 malloc 불필요 malloc 필요 이때, Python List의 특징을 보면 C의 Pointer Array와 상당히 비슷한 것을 볼 수 있습니다. (Pointer 특성상 고정된 크기(주소값)를 차지하고, Type은 void Pointer를 이용할경우) 그러면, 이제 Cpython 내의 PyListObject의 정의를 살펴보겠습니다. typedef struct { PyObject_VAR_HEAD /* Vector of pointers..
오늘 포스팅은 Python의 대표 Math Package중 하나인 Numpy에 대해서 다룹니다. Python을 써보시면 아시겠지만, Python List 대비 Numpy Array의 연산이 훨신 빠르다는것을 알 수 있습니다. Numpy가 왜 Native List보다 빠를 수 있는지, 하드웨어 관점을 더해서 설명합니다. 먼저 Numpy가 빠른 이유를 두줄 정리하고 갑니다. - SIMD - 데이터 정렬 1. SIMD SIMD(Single Instruction Multi Data) 하나의 CPU 명령어로 두개 이상의 Data를 처리하는 방법을 의미합니다. 하지만 빠른 계산은 조상님이 해주는게 아닙니다. CPU의 동작을 한번 생각해보겠습니다. 레지스터에는 하나에 하나의 32비트 2진수를 담을 수가 있습니다(Ge..
Python을 사용하다보면, 편합니다. 정말로 편합니다. 하지만 컴퓨터과학을 전공한 입장에서, "이렇게 편해도 되나?" 싶을때가 가끔 있습니다. 편한건 좋지만, 어떻게 작동하는지를 알아야 하는 맘이 듭니다. 이번 포스팅은 Python의 함수/패키지의 Detail을 확인하는 방법에대한 포스팅입니다. 가장 먼저, Python의 기본 함수를 확인하는 방법입니다.docs.python.org/ko/3/library/index.html 파이썬 표준 라이브러리 — Python 3.9.2 문서파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합docs.python.org파이썬은 오픈소스 언어..
C언어를 해보신분이라면 아시겠지만 C언어에선 함수의 매개변수를 수정해도, 해당 매개변수의 변화가 Global 변수에 영향을 주지 않습니다. #include void f(int a, int b){ a = a + b; } int main() { int v1 = 9; int v2 = 1; f(v1, v2); printf("%d",v1); return 0; } ==> 9 위 예시를보면, v1이 a로 입력, a에 1을 더해서 a가 10으로 출력된것 같지만 그렇지 않죠. 그렇기 때문에 C언어같은 경우 Pointer라는 개념을 통해서 매개변수 자체를 바뀌게할 수 있는 방법이 있습니다. 하지만 Python을 봅시다. Python은 Pointer가 없습니다. 그러면 Python은 매개변수를 어떤방식으로 전달할까요? 아래..
이번 포스팅은 Event Listener의 정체입니다. 많은분들이 코딩을 배우면서, 반응형 System(Web, Application...)을 배우면서 Event Listener에 대해서 배우게 됩니다. Event Listener는 Event(사용자의 Click or 키보드 입력 등.... Not normal한 상태)가 발생할 경우 해당 행동을 인지하고, 사용자에게 결과를 반환해 줍니다. 설명을 잘 살펴보면 1. 사용자의 특정 입력을 받는다. 2. 해당 입력이 무엇인지 판단한다. 3. 입력에 따라 정해진 결과를 반환한다. 함수의 구조와 매우 유사한 것을 알 수 있습니다. 그렇다면, 함수를 이용해서 아래와같은 Event Listener를 만들 수 있을 것입니다. def listener_left(): whi..
https://docs.python.org/ko/3/library/threading.html threading — 스레드 기반 병렬 처리 — Python 3.9.6 문서threading — 스레드 기반 병렬 처리 소스 코드: Lib/threading.py 이 모듈은 저수준 _thread 모듈 위에 고수준 스레딩 인터페이스를 구축합니다. queue 모듈도 참조하십시오. 버전 3.7에서 변경: 이 모듈은docs.python.org이번 포스팅은 Thread에 대한 내용입니다. Thread란 Python뿐만 아니라, 대부분의 모든 언어에서 지원하는 병렬처리를 위한 프로그래밍 입니다. 아래 간단한 이미지를 보시죠일반적으로, Main Flow가 흘러가면서 순차적으로 작업을 진행합니다. 이때, 작업1과 작업2, 작업..
- Total
- Today
- Yesterday
- 이분탐색
- 프로그래머스
- heap
- prime number
- 사칙연산
- Greedy알고리즘
- SIMD
- 컴퓨터그래픽스
- 완전탐색 알고리즘
- 코딩테스트
- stack
- C++
- Python
- GDC
- git
- 자료구조
- 동적계획법
- 병렬처리
- 알고리즘
- AVX
- Sort알고리즘
- hash
- 분할정복
- Search알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |