본문 바로가기

반응형

전체 글

(186)
PyPy로 성능 향상시키기 Python은 생산성이 높지만 성능이 느리다. 그 원인은 고급 언어인 파이썬을 기계어로 번역하는 과정에서 발생한다. 파이썬은 대표적인 인터프리터 언어이고, 이와 반대되는 개념으로 C와 Java 등의 컴파일 언어가 존재한다. 컴파일 언어 컴파일러는 전체 코드를 한번에 기계어로 변환한다. 그래서 줄 단위로 번역을 진행하는 인터프리터에 비해 번역하는 시간은 오래 걸리르 편이다. 하지만, 한 번 컴파일 할 때 실행 파일을 생성하기 때문에 코드를 재실행할 경우 해당 실행 파일을 실행하기만 하면 된다. 따라서, 실행 시간은 인터프리터에 비해 빠른 편이다. 인터프리터 언어 인터프리터는 고급 언어를 위에서부터 한 줄씩 차례로 번역하면서 실행한다. 그렇기에 컴파일러에 비해 번역에 소모되는 시간이 적다. 하지만, 매 실행..
코드 실행시간 측정 코드의 실행속도를 높이려면, 일단 시간을 측정하는 것이 좋다. import time start = time.time() # 시작 시간 저장 # 작업 코드 print("time :", time.time() - start) # 현재시각 - 시작시간 = 실행 시간 [출처] https://www.opentutorials.org/module/2980/17436
아나콘다로 머신러닝 라이브러리 설치하기 / 주피터노트북 시작하기 1. 아나콘다 설치 후, 아나콘다 프롬프트 실행 https://www.anaconda.com/download/ 2. 라이브러리 설치 pip install numpy scipy matplotlib ipython scikit-learn pandas pillow pip install tensorflow pip install mglearn -주피터 노트북 프로그램 코드를 브라우저에서 실행해주는 대화식 환경. 탐색적 데이터 분석에 적합. -Numpy 넘파이 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지. 다차원 배열을 위한 기능과 선형 대수 연산과 푸리에 변환 같은 고수준 수학 함수와 유사 난수 생성기를 포함 -Scipy 싸이파이 과학 계산용 함수를 모아놓은 파이썬 패키지. 고성능 선형 대수, 함수 최적화, 신..
로깅 1. stream에 로그 남기기 import logging logging.info('my INFO log') logging.warning('my WARNING log') # WARNING:root:my WARNING log 위 코드를 실행하면 warning level만 출력되는 이유는? logging의 default log level이 warning으로 되어있기 때문이다. 다음처럼 logging의 basicConfig level을 변경하면 된다. 모든 log를 출력하고자 할 때는 level을 debug로 지정한다. import logging logging.basicConfig(level=logging.DEBUG) logging.info('my INFO log') logging.warning('my WAR..
상위, 하위, 동일 폴더 내 모듈 from, import 하기 아래와 같은 프로젝트가 존재한다고 가정한다. project -- test +-- sub1 -- __init__.py -- a.py -- b.py +-- sub2 -- __init__.py -- c.py -- d.py -- e.py -- f.py -- __init__.py -- g.py e.py에서 다른 모듈 참조 (하위 폴더 내 파일, 동일 폴더 내 파일 참조) # a.py 참조시 from sub1 import a # f.py 참조시 import f from . import f a.py에서 sub2에 있는 c.py 참조 (상위 폴더 내 파일 참조) - 부모폴더의 절대경로를 참조 path에 추가 - 모듈의 시작 부분 import 위에 아래와 같은 코드를 추가 # a.py 에서 c.py 참조시 import ..
특정기간 지난 파일 삭제 - 파일 이름이 날짜시간이어야 함. - 경로는 IP로 단순히 정의했음. #-*- coding: utf-8 -*- import os, re from datetime import date, timedelta filePath = '경로/rawlog' class LogRemover: def __init__(self, dPath = filePath, days = 7): self.defaultPath = dPath self.duDays = days def getFileList(self): ipCheck = re.compile(r'(\d+).(\d+).(\d+).(\d+)') fList = os.listdir(self.defaultPath) for ipFile in fList: if ipCheck.search(ipF..
사전(dict) 사전(dict) 사전은 집합의 일종으로 키와 값이 하나의 데이터를 만듭니다. 순서가 없고 중복된 데이터를 갖지 않아서, 중복 데이터를 만드는 +, *를 사용할 수 없지만, 키를 이용하여 인덱스기호([])를 사용할 수 있습니다. 사전 만들기 사전은 집합과 마찬가지로 중괄호로 만듭니다. 키를 앞에, 값을 뒤에 쓰고, 구분은 콜론(:)으로 합니다. 데이터의 구분은 쉼표(,)로 합니다. >>> jb = {1:"one", 2:"two", 3:"three"} >>> jb {1: 'one', 2: 'two', 3: 'three'} >>> type(jb) 리스트, 집합, 사전은 키가 될 수 없습니다. 값은 모든 자료형이 가능합니다. 빈 사전 만들기 >>> jb = {} >>> type(jb) 사전의 길이 구하기 >>>..
모듈 파이썬 인터프리터를 종료한 후에 다시 들어가면, 만들었던 정의들이 사라진다 (함수나 변수들). 그래서, 좀 긴 프로그램을 쓰고자 한다면, 대신 인터프리터 입력을 편집기를 사용해서 준비한 후에 그 파일을 입력으로 사용해서 실행하는 것이 좋다. 이렇게 하는 것을 "스크립트"를 만든다고 한다. 프로그램이 길어짐에 따라, 유지를 쉽게 하려고 여러 개의 파일로 나누고 싶을 수 있다. 여러 프로그램에서 편리한 함수를 각 프로그램에 정의를 복사하지 않고도 사용하고 싶을 수도 있다. 이런 것을 지원하기 위해, 파이썬은 정의들을 파일에 넣고 스크립트나 인터프리터의 대화형 모드에서 사용할 수 있는 방법을 제공한다. 그런 파일을 "모듈" 이라고 부른다. 모듈로부터 정의들이 다른 모듈이나 메인 모듈로 임포트 될 수 있다 (메..

반응형