import threading import time import logging # 스레드 실행 함수 def thread_func(name): logging.info('sub-thread %s: starting', name) time.sleep(3) logging.info('sub-thread %s: finishing', name) if __name__ == "__main__": format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt='%H:%M:%S') logging.info('main-thread : before creating thread') # 함수 인자 확인 x = thread..
GIL이란? Python(bytecode) 을 Cpython 가 실행함. 실행 시 여러 thread 사용할 경우 단일 스레드만이 python object 만이 접근하게 제안하는 mutex 멀티 스레드를 사용해도 단 하나의 object 만이 접근이 가능하도록 함 Thread를 안전하게 사용하기 위함 GIL(Global Interpreter Lock)이 있지만 Python을 써도 되는 이유 (1) 단일스레드로도 충분히 빠르다. (2) 멀티 프로세스로 하는 작업을 만들어서 사용하면 되기 때문에 제약이 된다고 보지 않음 - numpy 등 대용량 라이브러리 등도 멀티 프로세스로 사용하기 때문에 문제가 되지 않음 (3) 병렬 처리는 Multiprocessing, asyncio 선택지등 다양한 방식 사용 가능 (4)..
(1) 프로세스 - 운영체제 -> 할당 받는 자원 단위 (실행 중인프로그램) - CPU동작 시간, 주소공간(독립적) - Code, Data, Stack, Heap -> 독립적 - 최소 1개의 메인 스레드를 보유함 - ex) 하나의 크롬 프로세스에서 여러가지 새탭을 통해서 스레드를 사용 - 파이프, 파일, 소켓 등을 사용해서 프로세스간 통신 - Context Swithing (2) 스레드 - 프로새스 내에서 실행 흐름 단위 - 프로세스 자원 사용 - Stack 만 별도로 할당하고 나머지는 공유(Code, Data, Heap) - 메모리 공유(변수 공유) - 한 스레드의 결과가 다른 스레드에 영향을 끼치 수 있음 - 동기화 문제는 정말 주의해서 코드를 작성해야함 (디버깅이 어려움) (3) 멀티 스레드 - 한..
파이썬의 견고한 객체지향 프로그래밍 강의를 듣고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 견고한 객체지향 프로그래밍 1. 단일 책임 원칙 01. 견고한 객체 지향 프로그래밍을 위한 SOLID 원칙 단일 책임 원칙 (Single Responsibility Principle) 개방 폐쇄 원칙 (Open-Closed Principle) 리스코프 치환원칙 (Liskov Substitution Principle) 인터페이스 분리 원칙 (Interface Segregation Principle) 의존 관계 역전 원칙 (Dependency Inversion Principle) 객체 지향 프로그래밍으로 만드는 프로그램의 크기가 커질수록 SOLID 원칙을 잘 지키는 것이 중요하다. 아무리 코드가 많은 프로그래밍..
코드잇의 객체 지향 프로그래밍의 4개의 기둥 강의를 보고 정리한 내용입니다. 문제될 시 삭제하겠습니다. 객체 지향 프로그래밍의 4개의 기둥 1. 추상화 01. 추상화 추상화란 ? 프로그래머들이 특정 코드를 사용할 때 필수적인 정보를 제외한 세부사항을 가리는 것 03. 추상화는 이때까지 쓰고 있었다. 변수, 함수, 리스트 04. 추상화 잘하기 : 이름 잘 짓기 어디에 쓰는 클래스이고 어떻게 사용할지 직관적으로 알 수 있도록 05. 추상화 더 잘하기 : 문서화하기 문서화 (docstring) : 함수 선언 아래에 """ 함수에 대한 간략한 설명 """ help(class name) 함수를 사용하면, docstring 문서가 나옴 09. 여기서 잠깐! 파이썬의 type hinting → 로 return 될 값..
코드잇의 객체지향 프로그래밍이란? 강의를 보고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 객체 지향 프로그래밍이란? 1. 객체 지향 프로그래밍 객체 : 속성과 행동을 떠올릴 수 있는 모든 존재 객체지향 프로그래밍이란 : 프로그램을 여러 개의 독립된 객체들과 그 객체들 간의 상호작용으로 파악하는 프로그래밍 접근법 프로그램에 어떤 객체들이 필요할지 정한다. 객체들의 속성과 행동을 정한다. 객체들이 서로 어떻게 소통할지 정한다. 01. 클래스와 인스턴스 클래스(속성과 행동을 가진 틀)로 객체(인스턴스)를 만든다. 02. 인스턴스 변수 인스턴스 변수는 사용하기 전에 무조건 먼저 선언해야 함 class User: # 클래스 pass user1 = User() # 객체 생성 user1.name = '김이름'..
코드잇의 파이썬 모듈과 패키지 강의를 듣고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 파이썬 모듈과 패키지 1. 모듈 01. 모듈이란 ? 기능상 성격이 비슷한 또는 연관성 있는 변수와 함수들이 조립된 파일 02. 모듈 사용하기 # area.py def circle(radius): return 3.14 * radius * radius def square(radius): return 3.14 * radius * radius area.py 와 run.py가 같은 폴더 안에 위치할 때 아래와 같이 import 파일명으로 모듈을 불러와서 함수를 사용 # run.py import area print(area.circle(2)) print(area.square(9)) print(area.PI) 03. 모듈을 ..
item-img 클래스 클릭 시 색상 변경 되고, python flask api 를 통해 DB 에 update, delete 하는 코드 1. python flask api method 생성 @app.route('/post/add_items', methods=['POST']) def add_items(): data = json.loads(request.data) user_id = data.get('user_id') subject = data.get('subject') items = data.get('items') user_db = db.MongoDB('user') user_db.add_item(user_id, subject, items) return items @app.route('/delete/delet..
1. __dict__ 용도 클래스 객체의 속성 정보를 확인하기 위해 사용 객체가 가진 여러가지 속성들을 딕셔너리 형태로 편하게 확인할 수 있다. 2. __dict__ 활용 방법 객체의 변수를 dict형태로 변경할 수 있다. dictionary 형태로 만들어 두면, 편하게 속성 값들을 가져올 수 있다. class Test: def __init__(self, name): self.name = name self.test_dict = {'a':1, 'b':2} self.test_list = ['1','2','3'] # Test 객체 생성 test_object = Test("minimi") # __dict__ 메소드를 이용해보면 type이 dict인 것을 확인 할 수 있다. print(type(test_objec..
파이썬에서 requests.get() 사용 시 ssl3 error(에러)가 나는 경우가 있다. 가장 좋은 방법은 필요한 인증서와 호스트명을 넣고 올바른 SSL 통신을 하는 것이지만 간단하게 해결할 수 있는 3가지 해결 방법을 기록한다. verify=false 사용하기 가장 간단한 방법으로 인증서 인증을 하지 않는다는 의미로 requests.get 실행 시 verify=false 를 넣어준다. response = requests.get(URL, verify=false) urllib2 사용하기 requests 대신 urllib2 를 사용하는 방법으로, requests.get()에서는 에러가 나도 urllib2.urlopen()으로는 에러가 나지 않는 경우가 많다. response = urllib2.urlop..
python google spreadsheet 연동 방법 구글 스프레드시트란 ? 쉽게 말하면 액셀을 휴대폰, 아이패드, 컴퓨터 등 언제 어디에서나 인터넷만 연결되어 있으면 확인 및 수정할 수 있는 구글이 개발한 스프레드 시트입니다. 실시간으로 저장되고 접근 가능성이 용이하여 사용할 수 있는 확장성이 넓습니다. 구글 스프레드시트를 간단한 데이터베이스로도 사용할 수 있습니다. 지금부터 설명드릴 python 과 구글 스프레드시트를 연동하는 방법을 통해 파이선 코드로 스프레드시트와 접근하여 활용하면 활용도가 무궁무진할 것으로 생각됩니다. 1. 아래 url 클릭 후 서비스 계정 만들기 클릭 URL : https://console.developers.google.com/iam-admin/serviceaccounts..
파이썬 Pillow 이미지 처리 (픽셀 색상 구하기, 누끼 이미지 만들기, 로고 이미지 붙이기) 파이썬 이미지 처리 라이브러리인 Pillow는 image와 관련된 다양한 처리를 할 수 있습니다. 그 중에서 특정 픽셀의 색상 구하기, 누끼이미지 만들기, 이미지에 이미지를 붙이기(로고 붙이기)를 해보도록 하겠습니다. python Pillow 설치 pip install pillow 특정 픽셀의 r,g,b 색상 구하기 from PIL import Image # 이미지 객체로 생성 im = Image.open(file_) # RGB 모드로 변경 rgb_im = im.convert('RGB') # 지정한 좌표(1, 400)의 색상을 r,g,b 변수에 넣음 r, g, b = rgb_im.getpixel((1, 400..