Python - Multithreading
2022. 6. 14. 09:49
📌 Python
프로세스와 쓰레드 프로세스(Process) 운영체제에서 할당 받는 지원 단위(실행 중인 프로그램) CPU 동작 시간, 주소공간이 독립적이다. 프로세스 영역인 Code, Data, Stack, Heap 영역이 독립적이다. 프로세스는 최소 1개의 메인 쓰레드를 보유한다. (구글 크롬 안에서 유튜브, 네이버, 넷플릭스 동작 중) 파이프, 파일, 소켓 등을 사용해서 프로세스간 통신이 가능하다. (Context Switching) 쓰레드(Thread) 프로세스 내의 실행 흐름 단위 (게임 안에서의 채팅, 음악, 아이템, 캐릭터 등) 프로세스의 자원을 사용 한다. Stack만 별도 사용하고 나머지는 공유한다. (Code, Data, Heap) 메모리를 공유한다. (변수 공유) 한 쓰레드의 결과가 다른 쓰레드의 영향..
Python - 메모리 구조 및 메모리 할당 과정
2022. 1. 24. 14:29
📌 Python
목차 Everything is object in Python 파이썬의 메모리 구조 파이썬에서의 Heap 사용 파이썬에서의 메모리 할당 과정 Everything is object in Python x = 10 print(type(x)) >> C에서 x = 10 이렇게 변수를 할당하면, 메모리에 해당 값이 바로 저장되지만 파이썬에서 x = 10 이렇게 변수를 할당하면, int라는 object를 만들어서 변수 x가 그 객체를 가리키는 형태입니다. x의 타입을 출력해보면 class가 나오는데, class를 구체화 한 것이 object입니다. Class와 Object에 대한 설명 더보기 더보기 class와 object를 간단히 설명하자면 class는 추상적인 것이고, object는 구체적인 것이라고 생각하면 됩니..
Mac - Conda가 안될 때, anaconda 터미널이 안켜질 때
2021. 6. 16. 22:26
📌 Python
conda를 실행했는데 zsh: command not found: conda 위와 같은 메시지가 뜰 때가 있다. 이때 해결하는 방법이다. vim ~/.zshrc 입력 source ~/.bash_profile 추가해주기 ss 누르고 ./source ~/.bash_profile 추가후 :wq 입력으로 저장 source ~/.zshrc 입력 끝
Python - 시각화 기초2
2021. 1. 31. 16:59
📌 Python
package 불러오기 import numpy as np from PIL import Image import matplotlib.pyplot as plt %matplotlib inline 이미지 파일 열기 opencv로도 열수 있지만, shape 순서가 바뀔 때도 있어서 PIL로 여는 것을 개인적으로 선호 path = 'source/dog.jpg' image_pil = Image.open(path) image = np.array(image_pil) 이미지 들여다 보기 image.shape #(세로길이, 가로길이, 색깔이 있으므로 3차원) (734, 1100, 3) np.min(image), np.max(image) (0, 255) 이미지를 열기 전에 shape 및 min, max를 통해서 이미지의 ran..
Python - 시각화 기초
2021. 1. 27. 15:25
📌 Python
Load Package import numpy as np import matplotlib.pyplot as plt %matplotlib inline Basic Attributes alpha : 투명도 kind : 그래프 종류 'line', 'bar', 'barh', 'kde' logy : Y축에 대해 Log scaling use_index : 객체의 색인을 눈금 이름으로 사용할지 여부 rot : 눈금 이름 돌리기 (rotating) 0 ~ 360 xticks, yticks : x, y축으로 사용할 값 xlim, ylim : X, Y축의 한계 grid : 축의 그리드를 표현할지 여부 subplots : 각 column에 독립된 subplot 그리기 sharex, sharey : subplots=True 이..
Python - Numpy 기초
2021. 1. 27. 08:19
📌 Python
zeros zeros = np.zeros([3,3]) zeros >> array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) 0으로 만들기 ones zeros = np.ones([10,5]) zeros >> array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]]) 1로 만들기 reshape arr = np.arange(12)...
Python - Tensor
2021. 1. 27. 07:48
📌 Python
딥러닝을 하다보면 Tensor라는 개념이 많이 나올 것이다. 그 중 Tensor의 개념을 잘 이해하는 것이 중요한데. 딥러닝에서는 주로 고차원적인 데이터를 많이 사용될 것이기 때문 Numpy는 그런 고차원적인 데이터를 다루기 쉽게 만들어져 있어 딥러닝을 하시게 된다면 늘 접하게 될 것임 0차원 arr = np.array(5) arr.shape >> 0 0차원의 배열 - numpy array는 1 또는 5, 10와 같이 숫자 데이터를 array화 해줄 수 있음 1차원 숫자가 10과 같이 하나만 들어간다고 해도 [] 리스트를 한번 씌우게 되면 차원이 생긴다 이때는 1차원이 되는건데 numpy 에서 shape를 표현 할 때 (1)이 아닌 (1, ) 이런 식으로 표현하게 됨 arr = np.array([5]) ..
Python - 정규표현식 (3)
2021. 1. 24. 17:28
📌 Python
findall search가 최초로 매칭되는 패턴만 반환한다면, findall은 매칭되는 전체의 패턴을 반환 매칭되는 모든 결과를 리스트 형태로 반환 re.findall(r'[\w-]+@[\w.]+', 'swc54545@gmail.com is swc54545@naver.com and swc54545@daum.com') >> ['swc54545@gmail.com', 'swc54545@naver.com', 'swc54545@daum.com'] compile 동일한 정규표현식을 매번 다시 쓰기 번거로움을 해결 compile로 해당표현식을 re.RegexObject 객체로 저장하여 사용가능 email_reg = re.compile(r'[\w-]+@[\w.]+') email_reg.search('test@gmai..
Python - 정규표현식 (2)
2021. 1. 22. 08:45
📌 Python
\ 다른 문자와 함께 사용되어 특수한 의미를 지님 \d : 숫자를 [0-9]와 동일 \D : 숫자가 아닌 문자 [^0-9]와 동일 \s : 공백 문자(띄어쓰기, 탭, 엔터 등) \S : 공백이 아닌 문자 \w : 알파벳대소문자, 숫자 [0-9a-zA-Z]와 동일 \W : non alpha-numeric 문자 [^0-9a-zA-Z]와 동일 메타 캐릭터가 캐릭터 자체를 표현하도록 할 경우 사용 \. , \\ re.search(r'\sba','i like babana') >> re.search(r'\.\?', '뭐야 이게.?') # \다음 문자 그자체를 찾는다. . 모든 문자를 의미 re.search(r'e..o', 'hi hello') >> 반복패턴 패턴 뒤에 위치하는 *, +, ?는 해당 패턴이 반복적으로..
Python - 정규표현식 (1)
2021. 1. 22. 08:24
📌 Python
정규표현식 regular expression 특정한 패턴과 일치하는 문자열를 '검색', '치환', '제거' 하는 기능을 지원 정규표현식의 도움없이 패턴을 찾는 작업(Rule 기반)은 불완전 하거나, 작업의 cost가 높음 e.g) 이메일 형식 판별, 전화번호 형식 판별, 숫자로만 이루어진 문자열 등 raw string 문자열 앞에 r이 붙으면 해당 문자열이 구성된 그대로 문자열로 변환 import re a = 'abcde\n' print(a) b = r'abcde\n' # row string print(b) >> abcde >> >> abcde\n search method 첫번째로 패턴을 찾으면 match 객체를 반환 패턴을 찾지 못하면 None 반환 m = re.search(r'abc', '123abc..
Python - 복소수 함수 만들기
2021. 1. 21. 09:22
📌 Python
import math class Complexnumber: def __init__(self, real, img): self.x = real self.y = img def __add__(self, pt): new_x = self.x + pt.x new_y = self.y + pt.y return Complexnumber(new_x, new_y) def __sub__(self, pt): new_x = self.x - pt.x new_y = self.y - pt.y return Complexnumber(new_x, new_y) def __mul__(self, factor): if type(factor) == int: return Complexnumber(self.x * factor, self.y * facto..
Python - 기본 타입으로 함수 만들기
2021. 1. 21. 08:45
📌 Python
__str__ class point: def __init__(self,x,y): self.x = x self.y = y def __str__(self): return '({}, {})'.format(self.x, self.y) p1 = (1,2) print(p1) __str__ 을 통해 우리가 만든 커스텀한 class 역시 파이썬은 기본 타입처럼 자연스럽게 쓸 수 있다. class point: def __init__(self,x,y): self.x = x self.y = y def add(self, pt): new_x = self.x + pt.x new_y = self.y + pt.y return point(new_x, new_y) def __str__(self): return '({}, {})'.for..
Python - method override, super
2021. 1. 20. 20:50
📌 Python
method override 부모 클래스의 method를 재정의(override) 하위 클래스(자식 클래스) 의 인스턴스로 호출시, 재정의된 메소드가 호출됨 class person: def __init__(self, name, age): self.name = name self.age = age def eat(self, food): print('{}은 {}을 먹습니다.'.format(self.name, food)) def sleep(self, minute): print('{}은 {}분 동안 잡니다.'.format(self.name, minute)) def work(self, minute): print('{}은 {}분 동안 일합니다.'.format(self.name, minute)) class student..
Python - inheritance(상속)
2021. 1. 20. 20:37
📌 Python
Class Inheritance (상속) 기존에 정의해둔 클래스의 기능을 그대로 물려받을 수 있다. 기존 클래스에 기능 일부를 추가하거나, 변경하여 새로운 클래스를 정의한다. 코드를 재사용할 수 있게된다. 상속 받고자 하는 대상인 기존 클래스는 (Parent, Super, Base class 라고 부른다.) 상속 받는 새로운 클래스는(Child, Sub, Derived class 라고 부른다.) 의미적으로 is-a관계를 갖는다 class person: def __init__(self, name, age): self.name = name self.age = age def eat(self, food): print('{}은 {}을 먹습니다.'.format(self.name, food)) def sleep(se..
Python - method
2021. 1. 20. 20:23
📌 Python
mehtod 멤버함수라고도 하며, 해당 클래스의 object에서만 호출가능 메쏘드는 객체 레벨에서 호출되며, 해당 객체의 속성에 대한 연산을 행함 {obj}.{method}() 형태로 호출됨 class Counter: def __init__(self): self.num=0 # Counter type은 항상 num이라는 데이터를 가지며 0으로 초기화된다. c1 = Counter() print(c1.num) >> 0 class Counter: def __init__(self): self.num=0 # Counter type은 항상 num이라는 데이터를 가지며 0으로 초기화된다. def print_current_value(self): print('현재 값은 :', self.num) c1 = Counter() ..
Python - __init__
2021. 1. 20. 18:01
📌 Python
init(self) 생성자, 클래스 인스턴스가 생성될 때 호출됨 self인자는 항상 첫번째에 오며 자기 자신을 가리킴 이름이 꼭 self일 필요는 없지만, 관례적으로 self로 사용 생성자에서는 해당 클래스가 다루는 데이터를 정의 이 데이터를 멤버 변수(member variable) 또는 속성(attribute)라고 함 클래스를 정의할 때 가장 먼저 정의하는 메쏘드이다. 클래스가 다루고자하는 데이터를 명시한다. 객체가 생성되는 시점에서 불리는 메쏘드. 가장 첫번째로 불리는 함수이다. class Person: def __init__(self): print(self, 'is generated') p1 = Person() p2 = Person() >> is generated >> is generated 객체를..