[Python]파이썬 동시성/비동기 프로그래밍 3. GIL(Global interpreter Lock)
2020. 7. 19. 14:54
Programming/Python
파이썬 동시성/비동기 프로그래밍 2. Asyncio [python]파이썬 동시성/비동기 프로그래밍 2. Asyncio [python]파이썬 동시성/비동기 프로그래밍 1. 코루틴 [python]파이썬 동시성/비동기 프로그래밍 1. 코루틴 코루틴 3.5 버전부터 지원(async/await 문법은 3.7 이상부터) 코루틴을 사용하면 CPU와 리소스 낭�� leo-bb.tistory.com GIL(Global Interpreter Lock) I. 파이썬의 구동방식 파이썬은 대표적인 인터프리터 언어입니다. 때문에 파이썬 실행 시 인터프리터가 메모리에 할당되고, 코드를 컴퓨터의 언어로 해석하여 CPU에 전달하면 CPU가 이를 받아 실행하는 순서로 진행됩니다.(마치 자바의 JVM 같은 것으로 파이썬이 "느린 언어"라..
[python]파이썬 동시성/비동기 프로그래밍 2. Asyncio
2020. 7. 18. 23:19
Programming/Python
[python]파이썬 동시성/비동기 프로그래밍 1. 코루틴 [python]파이썬 동시성/비동기 프로그래밍 1. 코루틴 코루틴 3.5 버전부터 지원(async/await 문법은 3.7 이상부터) 코루틴을 사용하면 CPU와 리소스 낭비를 방지할 수 있어 I/O처리를 극대화할 수 있음 일시 정지/정지가 가능한 함수를 말하며 generator 역시 leo-bb.tistory.com Asyncio 파이썬에서 동시성 프로그래밍을 위해 제공되는 패키지로 GIL을 회피하는 방법 중 하나 파이썬 3.4 버전에 표준으로 채택 비동기 프레임워크의 기반으로 사용되며 IO 병목이 발생하면서 고차원의 수준이 요구되는 네트워크 코드에 가장 유용 아래는 공식 레퍼런스 문서에서 설명하는 사항 1.파이썬 코르틴을 동시에 실행하고 완전히..
[python]파이썬 동시성/비동기 프로그래밍 1. 코루틴
2020. 7. 18. 19:55
Programming/Python
코루틴 3.5 버전부터 지원(async/await 문법은 3.7 이상부터) 코루틴을 사용하면 CPU와 리소스 낭비를 방지할 수 있어 I/O처리를 극대화할 수 있음 일시 정지/정지가 가능한 함수를 말하며 generator 역시 코루틴에 속함 I.코루틴과 제너레이터의 차이 def generator(): print('첫번째 작업 수행') yield 'first work func()' print('두번째 작업 수행') yield 'second work func()' print('세번째 작업 수행') yield 'third work func()' gen = generator() next(gen) def coroutine(): print('코루틴 시작') while True : func = yield print('..
[python]itertools를 사용해서 고난이도 코딩테스트도 쉽게 풀자!
2020. 7. 18. 18:17
Programming/Python
Itertools APL, Haskell, SML에 영감을 받아 파이썬에 최적화되어 동작하도록 구성된 반복 연산자 패키지로 자체 또는 조합되어 효율적이고 빠르게 동작하며 operator 모듈과 효과적으로 동작함 코딩 테스트 풀이 시 굉장히 유용하게 사용되는 패키지 중 하나 generator와 같이 사용할 수 있다. (generator가 궁금하시다면 => "링크") * operator 모듈 : 파이썬의 내장 연산자에 해당하는 __add__ 등을 제공하는 패키지로 add, lt, ne 등 객체 비교, 논리 연산, 수학 연산, 시퀀스 등을 수행하는데, __func__ 가 아니라 단일 이름으로 제공되는 차이가 있음 I. 무한 반복 반복 연산자를 무한히 수행하기 때문에 while, try/except 구문 등과 ..
[python]데코레이터(Decorator)
2020. 7. 11. 21:31
Programming/Python
1. 데코레이터 클로저인데 인수가 함수인 부분이 차이가 있으며, 다양한 상황에서 동일한 기능을 수행하는 함수가 필요할 때 데코레이터를 만들어 사용하면 유리합니다. 일반적으로 로그를 남겨 redirecting 등 부차적 스테이지로 넘기거나, 함수의 실행시간, 메모리 점유시간 등을 확인하기 위한 용도로 많이 사용됩니다. 1.장점 공통 함수 작성(로깅, 프레임워크, 유효성 체크 등 )을 통한 간결한 코드라인과 중복 제거 조합 사용이 편리 2.단점 가독성 좋지 못하고 디버깅이 이렵다. 특정 기능에 한정된 함수는 단일 함수로 작성하는게 좋다 1) 사용법 def decorator_func(func): def wrap_func(): return func() return wrap_func() def target(): ..
[python]Comprehension and Generator expression
2020. 7. 11. 20:59
Programming/Python
2020/07/11 - [Coder/Python] - [python/자료형] 시퀀스 자료형 -2. Dict [python/자료형] 시퀀스 자료형 -2. Dict 3. dict tuple, dict 와 함께 정말 많이 쓰는 자료형 중 하나 대표적인 hashtable 1) dict source = (('k1', 'val1'), ('k1', 'val2'), ('k2', 'val3'), ('k2', 'val4'), ('k2', 'val5')) dic1 = {} for k, v in s.. leo-bb.tistory.com 1. Comprehension and Generator expression 1) Comprehension iterable 한 객체를 생성하는 방법 중 하나 A. iterable 다수 요소(el..
[python/자료형] 시퀀스 자료형 -2. Dict
2020. 7. 11. 20:28
Programming/Python
1. Dict tuple, dict 와 함께 정말 많이 쓰는 자료형 중 하나 대표적인 hashtable 1) dict source = (('k1', 'val1'), ('k1', 'val2'), ('k2', 'val3'), ('k2', 'val4'), ('k2', 'val5')) dic1 = {} for k, v in source: if k in new_dict1: dic1[k].append(v) else: dic1[k] = [v] dic1 >>> {'k1': ['val1', 'val2'], 'k2': ['val3', 'val4', 'val5']} dic2 = {} # Use setdefault for k, v in source: dic2.setdefault(k, []).append(v) dic2 >>> ..