본문 바로가기

전체 글78

프로세스(Process) vs. 스레드 (Thread) Goal 1. 프로세스와 스레드의 차이점 설명하기 2. 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 이해하기 Q. 프로세스와 스레드의 차이는 무엇인가? A. 프로세스란 운영체제(OS)로부터 메모리를 할당 받아 실행 되는 프로그램의 작업 단위를 얘기하고, 스레드는 이러한 프로세스의 자원을 쪼개서 사용하는 실행 단위입니다. 프로세스는 1개 이상의 스레드로 실행되고, 자신만의 고유한 주소공간을 할당 받습니다. 스레드는 이 중에 stack만 따로 할당 받고 나머지 영역은 스레드끼리 공유합니다. 다른점 프로세스 스레드 정의 메모리를 할당 받아 실행되는 컴퓨터 프로그램의 작업 단위 프로세스가 할당 받은 자원을 이용하는 실행 단위 (즉, 1개의 프로세스는 1개 이상의 스레드를 가짐) 시스템 자원 OS로부터 고유한.. 2023. 2. 7.
단락 평가 (short-circuit evaluation) 단락 평가 논리 연산자 중 and와 or에는 단락 평가라는 것이 작용한다. 이 원리는 생각보다 많이 볼 수 있기 때문에 알아두면 에러 잡는데 유용하다. 간단하게 설명하자면 단락 평가는 첫번째 값에서 이미 반환 값이 확실해졌다면 두번째 값은 확인하지 않는 것이다. A Operator A and/or B Output Notes True and True and 'rabbit' rabbit 첫번째 값이 True면 두번째 값에 단락 평가가 적용 돼 두번째 값을 무조건 반환한다. False False and 'rabbit' False and에서는 양쪽 모두 True가 되어야 True를 반환할 수 있기 때문에 첫번째 값이 False가 나오면 단락 평가가 적용 돼 첫번째 값인 False가 반환된다. True or Tr.. 2022. 7. 26.
비교 연산자 vs. 논리 연산자 (Comparison vs. Logical operator) 비교 연산자 비교 연산자는 (1) 값이나 (2) 변수의 메모리 주소를 비교해서 True/False를 반환해준다. 1. 값을 비교하는 연산자: , =, ==, != a = 1 b = 3 print(a = b)# False print(a == b)# False print(a != b)# True 2. 변수의 객체 주소를 비교하는 연산자: is, is not a = "가지" b = "가지" c = b print(a == b)# True print(a is b)# False print(b == c)# True print(b is c)# True 위의 예제와 같이 a, b, c 변수가 모두 "가지"라는 값을 가지고 있어서 == 연산자로 값을 비교.. 2022. 7. 25.
얕은 복사 vs. 깊은 복사 (shallow copy vs. deep copy) 얕은 복사 (Shallow copy) 깊은 복사 (Deep copy) 메모리 주소 같음 다름 장점 ○ 공간, 메모리 효율성 ○ 파이썬의 기본 복사임으로 라이브러리 이용 없음 ○ 원본 유지 단점 ○ 복사본을 수정했을 때 원본도 같이 바뀜 ○ 공간, 메모리 추가로 차지하기 때문에 그만큼 속도도 느려지고 메모리 공간도 부족해짐 ○ copy라는 라이브러리 이용해야함 파이썬은 기본적으로 얕은 복사를 이용한다. var1 = [1,2,3] var2 = var1# 얕은 복사 print(id(var1), id(var2))# 140364606746528 140364606746528 같은 메모리 아이디가 출력됨 원본을 유지하기 위해 깊은 복사를 이용하고 싶다면 copy 라이브러리를 불러와야 한다. import copy va.. 2022. 7. 18.
딕셔너리 (dictionary) 함수 딕셔너리는 리스트와는 달리 짝을 지어 내용을 정리하는 자료형이다. 중괄호 "{ }"로 딕셔너리를 생성할 수 있으며 짝을 지을 때는 콜론 " : "을 이용한다. 생물학에서 RNA를 단백질로 번역될 때 RNA 서열을 3개의 base pair로 묶어서 하나의 codon을 형성한다. 이럴 경우 딕셔너리 자료형이 꽤 유용하다. codons = {'AUG': 'M', 'UAA': 'Stop', 'UGA': 'Stop', 'UAG': 'Stop', 'UUU': 'F', 'CUU': 'L', \ 'AUU': 'I', 'GUU': 'V', 'UUC': 'F', 'CUC': 'L', 'AUC': 'I', 'GUC': 'V', 'UUA': 'L', 'CUA': 'L', \ 'AUA': 'I', 'GUA': 'V', 'UUG.. 2022. 7. 17.
리스트 (list) 함수 파이썬의 리스트는 숫자든 문자든 여러 항목을 순서대로 관리하는데 유용한 자료형이다. 리스트는 네모 괄호 안에 항목들을 넣어 생성한다. 숫자, 문자, 다른 자료형 등을 넣을 수 있으며 섞어서도 사용이 가능하다. # 리스트는 네모 괄호로 형성한다 colors = ['red', 'orange', 'yellow', 'green'] 리스트에는 여러가지 내제된 함수가 있다. # 리스트 끝에 추가하기 (1개만 가능) colors.append('blue')# ['red', 'orange', 'yellow', 'green', 'blue'] # 리스트 끝에 추가하기 (1개 이상 가능) colors.extend(['blue', 'purple'])# ['red', 'orange', 'yellow', 'green', 'blue.. 2022. 7. 10.