1. futures파이썬에서 futures는 비동기 작업을 실행할 수 있도록 도와주는 모듈입니다. 이 모듈은 비동기 실행을 위한 api를 고수준으로 작성하고 사용하기 쉽도록 개선하기 위해 나온 것입니다. 일반적으로 network 및 I/O 관련 작업시 비동기방식의 활용을 권장합니다. 왜냐하면 비동기 작업을 실행하면 지연시간(block) cpu 및 리소스를 낭비하는 것을 방지할 수 있기 때문입니다. 파이썬의 병렬 프로그래밍은 비동기 작업이 적합한 프로그램일 경우 눈에 띄는 성능향상을 볼 수 있습니다. 파이썬 3.2부터 도입된 concurrent.futures는 멀티스레딩 또는 멀티프로세싱 api가 통일되어 매우 사용하기 쉬워졌습니다. 이 모듈은 실행중인 작업취소, 완료여부 체크, 타임아웃옵션, 콜백추가, ..
파이썬에서 코루틴이란 단일(싱글) 스레드에서 스택을 기반으로 동작하며 비동기작업을 쉽게 할 수 있도록 도와주는 도구입니다. 코루틴은 루틴 실행중 서브루틴을 호출하고 서브루틴에서 수행하는데 이 코루틴의 특징으로는 루틴 실행중 중지되었을 때 해당 위치를 기억하므로 동시성 프로그래밍을 할 수 있도록 도와줍니다.이외에도 여러 장점으로는 스레드에 비해 오버헤드가 감소하며 스레드와 달리 단일 스레드로 동작하기 때문에 컨텍스트 스위칭 비용이 발생하지 않는다는 등이 있습니다. 아래사이트에서 개념을 더 확실히 익힐 수 있습니다.https://velog.io/@jaebig/python-%EB%8F%99%EC%8B%9C%EC%84%B1-%EA%B4%80%EB%A6%AC-3-%EC%BD%94%EB%A3%A8%ED%8B%B4..
파이썬에서는 병행성과 병렬성을 지원합니다. 여기서 병행성이란 한 컴퓨터가 여러일을 동시에 수행하는 것을 의미합니다. 즉 하나의 프로세스에서 여러일을 쉽게 해결하는 것입니다. 반면에 병렬성이란 여러 프로세스가 여러작업을 동시에 수행하는 것을 의미합니다. 예컨대 파이썬으로 크롤링을 할때 여러사이트에 동시에 접속해서 각각 정보를 수집하는 것 등입니다. 이러한 병렬성은 일반적으로 속도상승에 목적을 두고 있습니다. 파이썬에서 병행성을 이해하기 위해서는 제너레이터를 알아야합니다. 제너레이터의 개념은 아래 페이지를 참고하시면 됩니다.https://zero-week.tistory.com/151 파이썬 시퀀스1. 시퀀스파이썬에서 시퀀스는 여러 요소를 순서대로 나열한 데이터 구조를 의미합니다. 이러한 시퀀스는 저장하는 방..
1. 시퀀스파이썬에서 시퀀스는 여러 요소를 순서대로 나열한 데이터 구조를 의미합니다. 이러한 시퀀스는 저장하는 방식에 따라 컨테이너와 플랫으로 나눌 수 있고, 변경가능여부에 따라 가변(mutable)자료형과 불변(immutable)자료형으로도 구분할 수 있습니다. 여기서 컨테이너에는 list, tuple, collections, deque 등이 들어가며, 플랫에는 str, bytes,bytearray,array.array, memoryview 등의 자료형이 들어갑니다. 가변 자료형에는 list, bytearray,array.array, memoryview, deque가 있으며 불변자료형에는 tuple, str, bytes 등이 있습니다. 2. 제너레이터아주 많은 양의 데이터를 리스트에 담아 변수로 만들면..
파이썬에서 장식자(Decorator)는 함수나 메서드를 수정하거나 기능을 추가하는 데 사용되는 강력한 기능입니다. 장식자는 함수의 앞이나 뒤에 @ 기호를 사용하여 정의되며, 주로 함수나 메서드를 간단하게 수정하거나 특정 기능을 추가하기 위해 사용됩니다. 파이썬에서는 기본적으로 많은 내장 장식자가 제공되며, 사용자가 직접 장식자를 정의하여 활용할 수도 있습니다. 예를 들어, @staticmethod, @classmethod, @property, @abstractmethod와 같은 내장 장식자가 있습니다. 데코레이터를 작성하기 위해서는 아래 내용을 이해해야 합니다.1. 클로저2. 일급함수를 활용하는 방법3. 가변인자4. 인자풀기(언팩킹)5. 파이썬이 소스코드를 불러오는 과정 데코레이터의 장단점은 아래와 같습..
1. 파이썬 변수 범위 - global먼저 global에 대해 알아보겠습니다.파이썬에서 global은 지역볌수를 전역변수로 참조하는 키워드입니다.아래 예제를 통해 자세히 알아보겠습니다.b = 20def func1(a): print(a) #출력: 2 print(b) #출력: 20 -> 전역변수 20 출력func1(2)c = 30def func2(a): print(a) print(c) c = 40 # 지역변수에 전역변수와 동일한 변수가 있을 경우 에러발생# func2(5) #출력: UnboundLocalError: local variable 'c' referenced before assignmentdef func3(a): global c # 전역 참조 -> 지역변수에 전역변..
일급 함수(first-class function)는 프로그래밍 언어의 일급 객체(first-class object)로서의 특성을 가진 함수를 말합니다. 일급 객체의 특성은 다음과 같습니다 1. 실행시 런타임 초기화를 해야 합니다.2. 변수로 할당 가능해야 합니다.3. 함수 인수 전달 가능해야합니다.4. 함수 결과가 반환 가능(return)해야 합니다. 먼저 하나의 함수와 하나의 클래스를 만들어 보겠습니다.def factorial(n): '''팩토리얼 함수. n:int''' if n == 1: return 1 return n*factorial(n-1)class A: pass 이때 factorial은 함수이고 A는 클래스입니다. 이 두개의 타입을 확인해보겠습니다.print..
gspread는 파이썬에서 구글 스프레드 시트와 연동하기 위한 라이브러리 입니다. gspread를 이용하면 구글 시트에서 읽기 쓰기 등을 자동화할 수 있습니다. 가장먼저 구글 로그인을 합니다. 1. API_KEY 생성먼저 아래사이트에 들어가서 콘솔을 클릭합니다. https://cloud.google.com/?hl=ko 클라우드 컴퓨팅 서비스 | Google Cloud데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.cloud.google.com 콘솔 버튼을 클릭하면 아래 화면이 나타날겁니다. '새 프로젝트 생성'이라는 버튼을 찾아서 클릭합니다. 아래화면에서 프로젝트이름을 입력하고 만들기를 클릭합니다.프로젝트가 생성..
1. sort()와 sorted()의 차이파이썬에서 반복가능한 객체를 정렬하기 위해서는 sort함수와 sorted함수가 있습니다. 이 두가지 함수는 여러가지 차이점을 가지고 있기 때문에 잘 알고 사용해야합니다. 먼저 sorted 함수는 기존 자료를 정리한 후 새로운 객체로 반환합니다. 따라서 기존 자료는 수정되지 않습니다. 예제를 통해 살펴보겠습니다.list_b = ["aa","ccc","bb","ddddd","eeee"]print(list_b) #출력: ['aa', 'ccc', 'bb', 'ddddd', 'eeee']sorted_b = sorted(list_b) # 새로운 객체 생성print(sorted_b) #출력: ['aa', 'bb', 'ccc', 'ddddd', 'eeee']print(list..
1. namedTuple이란?네임드 튜플은 튜플형식이지만 일반 튜플과 달리 key와 value로 이루어져있습니다. 따라서 인덱스뿐만 아니라 key값으로도 호출이 가능합니다. 따라서 튜플의 불변성과 딕셔너리의 유연성을 결합하여 사용할 수 있는 함수입니다. 2. 선언방법네임드 튜플의 선언방식에는 4가지 정도가 있습니다.아래 예제에서는 두개의 key를 생성했지만 띄어쓰기나, 콤마를 사용하여 더 많이 생성 가능합니다. # namedTuple 선언 첫번째 방법Point = namedtuple('Point','x y') # typename = Point, key는 x,y -> key는 띄어쓰기로 여러개 선언 가능하다.# namedTuple 선언 두번째 방법Point2 = namedtuple('Point',['x',..