언어/파이썬 & 장고
-
[Python] Tip - 자식 프로세스를 관리하려면 subprocess를 사용언어/파이썬 & 장고 2016. 12. 9. 22:00
파이썬은 실전에서 단련된 자식 프로세스 실행과 관리용 라이브러리를 갖추고 있습니다. 따라서 명령줄 유틸리티 같은 다른 도구들은 연계하는 데 아주 좋은 언어입니다. 기존 셸 스크립트가 시간이 지나면서 점점 복잡해지면, 자연히 파이썬 코드로 재작성하여 가독성과 유지보수성을 확보하려고 하기 마련입니다.파이썬으로 시작한 자식 프로세스는 병렬로 실행할 수 있으므로, 파이썬을 사용하면 머신의 CPU 코어를 모두 이용해 프로그램의 처리량을 극대화할 수 있습니다. 파이썬 자체는 CPU 속도에 의존할 수 있지만 파이썬을 사용하면 CPU를 많이 사용하는 작업을 관리하고 조절하기 쉽습니다.수년간 파이썬에는 popen, popen2, os.exec*를 비롯해 서브프로세스를 실행하는 방법이 여러 개 있습니다. 요즘 파이썬에서 ..
-
[Python] 병행성과 병렬성언어/파이썬 & 장고 2016. 12. 9. 21:24
병행성(Concurrency)병행성(concurrency)란 컴퓨터가 여러 일을 마치 동시에 하듯이 수행하는 것을 말합니다. 예를 들어 CPU 코어가 하나인 컴퓨터에서 운영체제는 단일 프로세서에서 실행하는 프로그램을 빠르게 변경합니다. 이 방법으로 프로그램을 교대로 실행하여 프로그램들이 동시에 실행하는 것처럼 보입니다. 쉽게말해 오리가 물위를 떠다니기 위해 물속에서 발장구치는 것과 같습니다. (오리= 1 Core 컴퓨터, 발장구 = 여러프로세스들)병렬성(Parallelism)병렬성(parallelism)은 실제로 여러 작업을 동시에 실행하는 것입니다. CPU 코어가 여러 개인 컴퓨터는 여러 프로그램을 동시에 실행할 수 있습니다. 각 CPU코어가 각기 다른 프로그램의 명령어를 실행하여 각 프로그램이 같은 ..
-
[Python] Tip - 메타클래스로 클래스 속성에 주석달기언어/파이썬 & 장고 2016. 12. 6. 21:00
메타클래스로 구현할 수 있는 기능 중 하나는 클래스를 정의한 이후에, 하지만 그 클래스를 실제로 사용하기 전에 프로퍼티를 수정하거나 주석을 붙이는 것입니다. 보통은 이 기법을 디스크립터와 함께 사용하여 클래스에서 디스크립터를 어떻게 사용하는지 자세히 조사한 정보를 디스크립터에 제공합니다.예를 들어 고객 데이터베이스의 로우를 표현하는 새 클래스를 정의한다고 가정합니다. 데이터베이스 테이블의 각 컬럼에 대응하는 클래스의 프로퍼티가 있어야 합니다. 따라서 프로퍼티를 컬럼 이름과 연결하는 데 사용할 디스크립터 클래스를 다음과 같이 정의합니다.class Field: def __init__(self, name): self.name = name self.internal_name = '_' + self.name def..
-
[Python] Tip - 메타클래스로 클래스의 존재를 등록언어/파이썬 & 장고 2016. 12. 6. 20:33
메타클래스를 사용하는 또 다른 일반적인 사례는 프로그램에 있는 타입을 자동으로 등록하는 것입니다. 등록은 간단한 식별자를 대응하는 클래스에 매핑하는 역방향 조회를 수행할 때 유용합니다.예를 들어 파이썬 객체를 직렬화한 표현을 JSON으로 구현한다고 가정합니다. 객체를 얻어와 JSON 문자열로 변환할 방법이 필요합니다. 다음은 새엉자 파라미터를 저장하고 JSON 딕셔너리로 변환하는 기반 클래스를 범용적으로 정의한 것입니다.import json class Serializable: def __init__(self, *args): self.args = args def serialize(self): return json.dumps({'args': self.args}) class Point2D(Serializabl..
-
[Python] Socket과 TCPServer를 이용한 TCP/IP 프로그래밍 (작성중)언어/파이썬 & 장고 2016. 12. 6. 19:50
파이썬에는 HTTP, FTP, SMTP등 다양한 프로토콜을 구현한 네트워킹 라이브러리들이 있는데 그 라이브러리들이 공통으로 사용하는 라이브러리가 있습니다. 바로 Socket 모듈입니다. socket모듈은 TCP/IP, UDP/IP를 지원하는 버클리 소켓 인터페이스를 여러가지 함수와 socket클래스를 통해 제공합니다. socket 클래스를 이용하면 거의 모든 인터넷 프로토콜을 구현할 수 있다는 장점이 있지만, 익히고 사용하기가 간단하지 않다는 단점도 있습니다. 그래서 여기서는 socket클래스와 함께 TCPServer 클래스 모듈을 이용한 TCP/IP 프로그래밍을 설명합니다. TCPServer 클래스는 이름이 말하는 것처럼 서버 애플리케이션에서 사용하며 클라이언트의 연결 요청을 기다리는 역할을 합니다. ..
-
[Python] 환경변수 값 구하기언어/파이썬 & 장고 2016. 12. 6. 10:10
보통 장고에서 환경에 따라 다른 파일을 실행하기 위해 settings.py을 분리하는데 이때 사용자가 입력한 환경변수의 값을 다음 함수를 사용하여 구할 수 있습니다. # 실행 명령어 $ python3 manage.py run --settings=base.settings.local import os env_var = os.environ.get('DJANGO_SETTINGS_MODULE') print(env_var) # 결과 # base.settings.local
-
[Python] request 모듈 간단 사용법언어/파이썬 & 장고 2016. 12. 1. 14:06
Python에서 HTTP 요청을 보내는 모듈인 requests를 간단하게 정리해보겠습니다.HTTP GET 요청 방법import requests url = 'http://google.com' response = requests.get(url=url) print(response.status_code) print(response.text) # 결과 # 200 # 검색 이미지 지도 Play YouTube 뉴스 Gmail 드라이브 더보기 »웹 기록 | 설정 | 로그인 한국 # 고급검색언어도구 광고 프로그램비즈니스 솔루션+GoogleGoogle 정보Google.com© 2016 - 개인정보처리방침 - 약관www.google.com주소로 GET 요청을 하고 서버에서는 해당 요청을 받아 작업을 처리한 후 요청자인 사용..
-
[Python] 파이썬에서 shell 명령어 사용하기 (shell script 작성법)언어/파이썬 & 장고 2016. 12. 1. 13:22
파이썬에서 쉘 명령어를 내리는 방법은 아래와 같습니다.import os os.system('ls -la') total 48 drwxr-xr-x@ 9 user staff 306 Dec 1 13:16 . drwxr-xr-x 20 user staff 680 Nov 3 14:58 .. drwxr-xr-x@ 8 user staff 272 Dec 1 11:03 .idea -rw-r--r-- 1 user staff 9 Nov 23 17:57 aa.log -rw-r--r-- 1 user staff 1888 Dec 1 13:16 gocom.py 하지만 여기서 출력되는 내용을 변수로 담아서 사용이 불가능합니다. os.system()은 명령이 성공적으로 실행하면 0을 리턴하고 그렇지 않으면 -1과 같은 숫자를 리턴합니다.쉘..