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. 객체 지향 프로그래밍이란 ? 객체 : 객체의 상태를 나타내는 변수와 함수가 있음 객체 지향 프로그래밍 : 프로퍼티와 메소드로 이루어진 각 객체들의 상호 작용을 중심으로 코드를 작성하는 것 절차 지향 프로그래밍 : 변수와 함수를 가지고 작업의 순서에 맞게 코드를 작성하는 것 02. 1-1. object literal Object Literal : 객체를 나타내는 문자열 index.html index.js console.log('test'); const user = { // property 속성 : 객체의 상태를 담음 email: 'chris@go..
코드잇의 자바스크립트 웹 개발 기본기 강의를 듣고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 자바스크립트 웹 개발 기본기 3. 비동기 실행과 Promise 객체 01. fetch 함수와 비동기 실행 then 메소드로 등록했던 callback 들이 response가 오면 출력됨 then 메소드로 등록만하고, 그 아래 코드가 실행됨 비동기 실행 : 시작된 작업이 완료되기 전에 다음 코드를 실행하는 것 동기 실행 : 시작한 작업을 다 처리하고 나서야 다음코드를 실행하는 것 console.log('Start'); fetch 함수(리퀘스트 보내기 및 콜백 등록) console.log('End'); 리스폰스가 오면 2. 에서 then 메소드로 등록해뒀던 콜백 실행 console.log('Start!'); f..
코드잇의 모던 자바스크립트 강의를 듣고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 코드잇 모던 자바스크립트 1. 모던 자바스크립트 이해하기 현시점에서 사용하기 적합한 범위 내에서 최신 버전의 표준을 준수하는 자바스크립트 ECMAScript의 첫 버전은 1997년에 등장했지만, 매년 새로운 버전들을 출시하진 않았음 하지만 여섯 번째(ES6)부터는 매년 새로운 버전들이 출시되면서 ECMAScript의 버전을 부를 때 연호를 붙여 ES2015(ES6), ES2016(ES7) ****으로 부르게 되었음 자바스크립트 개발자들 사이에서는 ES2015 이후에 매년 출시된 버전들을 통칭하기 위해서 ES2015+ 혹은 ES6+라는 용어를 사용 ES6부터는 연호를 사용해서 ES2015, ES2016이라고도 부른다 ..
파이썬의 견고한 객체지향 프로그래밍 강의를 듣고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 견고한 객체지향 프로그래밍 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. 모듈을 ..
코드잇의 인터랙티브 자바스크립트를 보면서 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 인터랙티브 자바스크립트 1. 인터랙티브 자바스크립트 시작하기 03. id로 태그 선택하기 // id로 태그 선택하기 // 존재하지 않는 id를 선택하면 null로 나옴 document.getElementById('id'); 05. class로 태그 선택하기 // class로 태그 선택하기 document.getElementsByClassName('class'); // class로 태그 선택하기 const test = document.getElementsByClassName('class'); console.log(test[1]); for (let value of test) { console.log(value); } ..
프로그래밍과 데이터 in JavaScript 해당 내용은 코드잇의 '프로그래밍과 데이터 in JavaScript' 를 보고 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 01. 객체 01. 객체와 프로퍼티 객체는 {} 로 만들 수 있음 property name 작성 시 따옴표로 감싸지 않을 수 있지만, 그러려면 아래의 조건을 만족해야 함 첫번째는 글자는 반드시 문자, 밑줄(_), 달러기호($) 중 하나로 시작해야 함 띄어쓰기 금지 하이픈(-) 금지 { 키 : value, property name : property value } 03. 객체에서 데이터 접근하기 let codeit = { name: '코드잇', 'born Year': 2017, isVeryNice : true, wortCourse: n..