Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 트라이
- 카카오 인턴
- CleanCode
- 가사 검색
- 프로그래머스
- jdbc
- 트라이 #trie #알고리즘
- 보행자 천국
- 크레인 인형뽑기 게임
- 튜플
- trie
- pycon
- 호텔 방 배정
- 징검다리 건너기
- 불량 사용자
- bulk update
- Tistory
- Python
- Open API
- 티스토리 open api
- 티스토리
- Spring Boot
- 알고리즘
Archives
- Today
- Total
택시짱의 개발 노트
Python 기본 개념 공부.. 본문
Generator
Generator란?
- Generator(제네레이터)는 제네레이터 함수가 호출될 때 반환되는 iterator(이터레이터)의 일종이다. 제네레이터 함수는 일반적인 함수와 비슷하게 생겼지만 yield 구문을 사용해 데이터를 원하는 시점에 반환하고 처리를 다시 시작할 수 있다. 일반적인 함수는 진입점이 하나라면 제네레이터는 진입점이 여러개라고 생각할 수 있다. 이러한 특성때문에 제네레이터를 사용하면 원하는 시점에 원하는 데이터를 받을 수 있게된다.
동작 방법
- yield 문이 포함된 제네레이터 함수를 실행하면 제네레이터 객체가 반환되는데 이 때는 함수의 내용이 실행되지 않는다.
- next()라는 빌트인 메서드를 통해 제네레이터를 실행시킬 수 있으며
__next()__
메서드 내부적으로 iterator를 인자로 받아 이터레이터의__next__()
메서드를 실행시킨다.
- next()라는 빌트인 메서드를 통해 제네레이터를 실행시킬 수 있으며
- 처음
__next__()
메서드를 호출하면 함수의 내용을 실행하다 yield 문을 만났을 때 처리를 중단한다.
- 처음
- 이 때 모든 local state는 유지되는데 변수의 상태, 명령어 포인터, 내부 스택, 예외 처리 상태를 포함한다.
- 그 후 제어권을 상위 컨텍스트로 양보(yield)하고 또
__next__()
가 호출되면 제네레이터는 중단된 시점부터 다시 시작한다.
- 그 후 제어권을 상위 컨텍스트로 양보(yield)하고 또
GIL( Global Interpreter Lock)
- GIL (Global Interpreter Lock 란?
- GIL은 스레드에서 사용되는 Lock을 인터프리터 레벨로 확장한 개념인데 여러 스레드가 동시에 실행되는걸 방지한다. 더 정확히 말하자면 어느 시점이든 하나의 Bytecode만이 실행되도록 강제한다. 각 스레드는 다른 스레드에 의해 GIL 이 헤제되길 기다린 후에야 실행될 수 있다. 즉 멀티 스레드로 만들었어도 본질적으로 싱글 스레드로 동작한다.
Python Sort
- Python Sort는 Timsort 알고리즘 이다.
- python의 내부 sort는 timsort 알고리즘으로 구현되어있다. merge sort와 insert sort가 병합된 형태의 안정정렬이다.
timsort는 merge sort의 최악 시간 복잡도와 insert sort의 최고 시간 복잡도를 보장한다. 따라서 O(n) ~ O(n log n)의 시간복잡도를 보장받을 수 있고, 공간복잡도의 경우에도 최악의 경우 O(n)의 공간복잡도를 가진다. 또한 안정정렬으로 동일한 키를 가진 요소들의 순서가 섞이지 않고 보장된다.
- python의 내부 sort는 timsort 알고리즘으로 구현되어있다. merge sort와 insert sort가 병합된 형태의 안정정렬이다.
감사합니다~
출처 : https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Python
반응형
'python' 카테고리의 다른 글
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 테스트 ) (0) | 2021.07.25 |
---|---|
pycon - 우아하게 준비하는 테스트와 리팩토링 ( 클린코드 ) (0) | 2021.07.24 |
python으로 Trie 구현 with defaultdict (0) | 2020.09.08 |
python heapq 모듈 (0) | 2020.09.08 |
python 입력 받기 (0) | 2020.08.31 |
Comments