파이썬은 프로그래밍 언어로써 확고한 지위를 차지할 수 있었던 몇가지 이유가 있다. 기존 builtins 라이브러리에 추가로 서드 파티 즉 외부 라이브러리가 방대하고 강력한게 많다. 그러나 너무 많기 때문에 빛을 보지 못하고 잊혀지는 아까운 라이브러리 들도 있다. 또 한 한 영역에만 집중적으로 작업하는 프로그래머는 다른 유형의 작업을 위해 만들어진 라이브러리를 통해 얻을 수 있는 유익한 부분을 미쳐 모르는 경우가 있다. [Pillow] 이미지 처리에 경험이 있다면 대부분의 파이썬 사용자들은 PIL(파이썬 이미지 라이브러리)에 익술 할 것이다. 그러나 PIL 은 제약이 많으며 업데이트가 잦지 않다는 단점이 있다. 필로우는 PIL 보다 더 사용하기 쉬우면서도, 최소한의 변경만으로 PIL 와 코드 호환성을 확보..
고차함수는 하나 이상의 함수를 인자로 취한다. map, filter, max, reduce 등등 파이썬에는 인자를 함수로 갖는 빌트인 함수들이 존재한다. 파이썬에서 함수는 일급객체에 해당된다. 일급 객체란 1. 변수나 데이터에 할당 할 수 있어야 한다. 2. 객체의 인자로 넘길 수 있어야 한다. 3. 객체의 리턴값으로 리턴 할 수 있어야 한다. 고차 함수를 이용하면 간결하고 이해하기 쉬운 프로그램을 만들 수 있다.
클린 코드가 단순히 멋진 것이라거나 사치품이 아니라는 것을 이해해는 것이다. 클린 코드는 필수적인 적이다. 코드의 품질을 관리하지 않는다면 결과적으로 기술 부채가 누적되어 실해한 프로젝트가 될 가능성이 높아진다.비슷한 맥락으로 조금 더 자세히 들어가면 포매팅과 문서화에 대한 개념이 있다. 이것은 당장 꼭 필요하지 않은 오버 스펙의 작업처럼 들릴지도 모르지만, 이거 역시 코드를 관리하는데 있어서 기본적인 역할을 한다. 여기서 훌륭한 코딩 가이드 라인을 준수하는 것이 얼마나 중요한지를 분석 해볼 것이다.코드를 문서와 일치시키려면 왜 지속적인 작업이 필요한지 살펴보고 이를 자동화 하기 위한 도구는 어떤것이 있는지 알아 본다. 이러한 이유 때문에 빌드의 일부로서 주요 도구를 설정하여 자동 실행되도록 할 것이다...
[event] 이벤트 기반 프로그래밍은 이전에 다룬 한정된 파이썬 어플리케이션과는 다르다. 일반적으로 이러한 우선 프로그램은 플로우를 설정하고 메인 메모리의 실행 관점에서 프로그램의 어떤 부분이 비결정적일지라도 독립적인 접근법을 결정론적으로 따른다. 그림. 이벤트 기반 프로그램에서는 일반적으로 이벤트에 반응하는 일정한 이벤트 루프가 있다. 이벤트 루프가 시작되면, 어떤것이 실행되고 그 순서가 어떻게 되는지 결정하는 시스템상에 필요한 이벤트가 내려진다. 쉬운예로 키보드 입력을 들 수 있다. 다음에 어떤 키가 눌릴지 결정할 수는 없지만 프로그램이 key-press 이벤트에 반응했을 때 주어지는 키에 대해서 매핑되는 특정 함수를 갖는다. 그림. 이벤트 기반 프로그램이 일반적으로 따르는 흐름 구성을 볼 수 있다..
만약 1000 개의 웹 페이지를 불어와야 하는 상황이 있다. 이때 1개의 페이지를 요청하면 서버에서 처리해줘서 응답해 주는 시간은 1초라고 하자. 그러면 1000 개의 페이지를 응답 받으려면 1000 초가 걸린다. 사실 1개 요청하고 1초 동안 아무것도 안하고 기다리는 시간이 너무 아깝다. 이렇게 바쁠 때는 몸이 열개라도 모자라다는 말을 한다. [multi thread] 멀티 스레드는 실제로 몸이 10개이다. 스레드를 일꾼으로 볼 수 있다. n 개의 일꾼이 동시성을 가지고 일을 수행한다. 하지만 각 일꾼은 자기일이 끝나면 가만히 놀고 있을 수 있다. [async] 한페이지를 로딩하면서 다른 페이지를 로딩한다. 스레드는 하나지만 굉장히 빨리 다른일로 전환하여 수행한다. 이게 가능하려면 함수를 실행결과를 기..
[range] range 라는 것은 파이썬에서 연속된 숫자를 얻기 위해서 사용된다. r = range(10) print(r[0], r[1], r[-1])r 의 타입은 range 이고 인덱스를 통해서 접근이 가능하다. range(10) 이르는 뜻은 0~9까지 숫자를 가지고 있다는 뜻이다. r = range(5, 10) print(r[0], r[1], r[-1])range(5, 10) 이라고 하면 5는 start 가 되서 포함된다. 즉 5부터 라는 뜻이고 10은 stop 이라서 포함이 안되고 9 까지 이다. r = range(1, 10, 2) print(r[0], r[1], r[-1])이번에는 range 의 인자가 3개가 되었다. 첫번째 부터 start, stop, step 인데 step 은 숫자의 간격이 ..
[GIL] 자바나 C 계열의 언어를 사용하다가 파이썬을 하다보면 이해가 안되는 것이 GIL 이다. Global Interpreter Lock 의 약자로 여러개의 쓰레드가 있을때 쓰레드간의 동기화를 위해 사용되는 기술중 하나이다. GIL은 전역에 lock 을 걸어 두고 이 lock 을 점유해야만 코드를 실행할 수 있도록 제한한다. 따라서 동시에 하나 이상의 쓰레드가 실행되지 않는다. 예를들어 아래 그림과 같이 3개의 쓰레드가 분산해서 일을 처리하게 될 때도 실제로 cpu 점유할 수 있는 thread 는 하나 뿐이다. 따라서 실제로 사용하는 코어는 하나뿐인 것이다. [thread context switching] os 는 스레드 하나의 작업을 진행하기 위해 해당 스레드의 context 를 읽어오고, 다시 다..
ProcessPoolExecutor 은 기본적으로 ThreadPoolExecutor 와 동일한 기능으로 사용된다. ThreadPoolExecutor 와 마찬가지로 Executor 클래스의 하위 클래스로 많은 메소드가 동일하게 나타난다. [constructor] ProcessPoolExecutor 를 생성하는 과정은 concurrent.futures 모듈에서 클래스를 불러오는 부분과 다음과 같이 생 성자 객체 인스턴스화 하는거 빼고는 ThreadPoolExecutor 와 동일하다. from concurrent.futures import ProcessPoolExecutor import os import time def task(): print(f"executing out task on process {os...
- Total
- Today
- Yesterday
- 엑셀 비교
- 문과 코딩
- 장고 카톡 자동응답
- 파이썬 강좌
- django chatbot
- 장고
- gitignore
- gitlab
- admin.py
- Tistory
- 파이썬 프로그래밍
- pycrypto
- PuTTYGen
- 플러스친구 자동응답
- 이미지 비교
- django
- 문서 비교
- virtualenv
- 모바일 스킨 적용
- Python
- 장고 플러스친구 자동응답
- 면접정답
- GIT
- wsgi
- chatbot
- 파이썬 입문
- 파이썬 독학
- 모바일 테마 적용
- 면접답변
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |