IT

    golang - if

    golang - if

    if문 기본 사용법 if문은 조건에 따라 분기하는 구문이다. if 조건문 { 문장 } else if 조건문 { 문장 } else { 문장 } 그리고 &&, 또는 || 논리 연산자 &&와 ||를 사용할 수 있다. &&는 AND를 의미하고, ||는 OR를 의미한다. 쇼트 서킷 && 연산은 좌변이 false이면 우변을 검사하지 않고 false 처리를 합니다. || 연산 역시 좌변이 true이면 우변은 검사하지도 않고 true 처리를 한다. 이를 쇼트서킷이라고 부른다. 소괄호 활용 소괄호를 사용하여 다양한 조건문을 쉽게 만들 수 있다. 중첩 if if문 안에 if문을 중첩해 사용할 수 있다. if 초기문;조건문 if문 조건을 검사하기 전에 초기문을 넣을 수 있다. 초기문은 검사에 사용할 변수를 초기화할 때 주로..

    golang - constant number

    golang - constant number

    상수 선언 상수란 변하지 않는 값을 뜻한다. 문자열, 정수, 실수 등 기본 타입값들만 상수로 선언될 수 있다. 구조체, 배열 등 기본 타입(primitive)이 아닌 타입(complex)에는 상수를 사용할 수 없다. Go lang 상수 가능 타입. 불리언, 정수, 복소수, 룬(rune), 실수, 문자열 상수 선언 방식은 const키워드를 사용한다. const ConstValue int = 1 상수의 메모리 주솟값을 접근할 수 없기 때문에 &(메모리 주솟값을 반환함)를 이용해서 출력하면 에러가 발생한다. 상수는 값, 이름, 타입 3가지 속성만을 가진다. 일반 변수는 값, 이름 타입, 메모리 주소 4가지 속성을 가진다. 상수의 사용 변하면 안 되는 값 변하면 안되는 상수 예를 들어 원주율 파이값을 사용할 때..

    golang - function

    golang - function

    함수 정의 package main import ( "fmt" ) func Add(a int, b int) int { return a + b } func main() { c := Add(3, 6) fmt.Println(c) } 함수를 호출하면 생기는 일 함수를 호출할 때 입력하는 값을 argument라고 한다. 아규먼트 혹은 인수라고 한다. 반면 함수가 외부로부터 입력받는 변수를 parameter라고 부른다. 매개변수 혹은 파라미터라고 한다. 함수를 호출하며 입력한 값은 실제 함수에서 보낸 값을 그대로 사용하는 것이 아니라 값을 복사해 사용하게 된다. 위 Add() 함수를 호출하게 되면 매개변수를 선언하고 입력한 인수의 값을 복사한다. 예시에서 a는 3, b는 6을 복사한다. 함수가 종료되면 함수에서 사용..

    파이썬 비동기 - async

    파이썬 비동기 - async

    순차 처리를 했을 경우 import timeit from urllib.request import urlopen urls = ['http://daum.net', 'https://google.com', 'https://apple.com', 'https://tistory.com', 'https://github.com/', 'https://gmarket.co.kr/'] start = timeit.default_timer() # 순차 실행부 for url in urls: print('Start', url) urlopen(url) print('Done', url) # 완료시간 - 시작시간 duratio..

    파이썬 Concurrency - Future

    파이썬 Concurrency - Future

    동시성 개념 비동기 작업 쓰레드풀 실습 프로세스풀 실습 블록 / 논블록 서로 다른 스레드 또는 프로세스에서 실행가능하다. 내부 과정 알 필요 없으며, 고수준으로 인터페이스를 제공 from concurrent import future ProcessPoolExecutor : GIL 우회, 내부적으로 os.cpu_count() 를 사용 ThreadPoolExecutor: GIL 종속 Python GIL (Global Interpreter Lock) GIL 은 한 번에 하나의 스레드만 수행 할 수 있게 인터프리터 자체에서 락을 거는 것. 예를들어 하나의 변수에 여러개의 스레드가 접근 하는 경우 데드락 같은게 발생할 수 있음 from concurrent import future worker = 10 #스레드수 #..

    파이썬 코루틴 Coroutine

    파이썬 코루틴 Coroutine

    Coroutine 의 개념 yield 키워드 : 메인 루틴과 서브 루틴의 연결 기능을 해준다. 멈춰있다가 다음 루틴을 제어 코루틴의 제어, 코루틴 상태, 양방향 값 전송을 알아본다. yield from 코루틴 서브 루틴 : 메인 루틴에서 리턴에 의해 호출 부분으로 돌아와 다시 프로세스 쓰레드 : 지금까지 해온것은 싱글 쓰레드 작업, 멀티 쓰레드는 공유 자원의 교착 상태를 관리해야 하기 때문에 복잡하다. 컨텍스트 스위칭 비용 발생과 자원 소비 비용 고려 코루틴 루틴 실행 중 멈춤 가능, 특정 위치로 돌아갔다가 다시 원래 위치로 돌아와 수행 비동기 처리 방식으로 동시성 프로그래밍을 구현할 수 있다. 코루틴은 제너레이터를 기반으로 작동함 코루틴은 스케쥴링 오버헤드가 매우 적다. (= 컨텍스트 스위칭 비용이 적..