본문 바로가기

ALL

파이썬과 비동기 프로그래밍 #2, 파이썬에서 비동기 프로그래밍 시작하기 지난글에 이은 두번째 글입니다. 지난 글에서는 비동기 프로그래밍이 의미하는 바와 쓰레딩과 비동기의 차이점에 대해 알아봤습니다. 이번 글에서는 파이썬에서 어떻게 비동기를 구현할 수 있는지에 대해 알아보겠습니다. 용어정리 우선 용어부터 최대한 쉽게 설명해보겠습니다. 파이썬에서 비동기 프로그래밍을 하기 위해서는 이벤트 루프와 코루틴을 이해해야 합니다. 1. 이벤트 루프(Event Loop) 이벤트 루프는 작업들을 루프(반복문)를 돌면서 하나씩 실행시키는 역할을 합니다. 이때, 만약 실행된 작업이 특정한 데이터를 요청하고 응답을 기다려야 한다면, 이 작업은 다시 이벤트 루프에 통제권을 넘겨줍니다. 통제권을 받은 이벤트 루프는 다음 작업을 실행하게 됩니다. 그리고 응답을 받은 순서대로 멈췄던 부분부터 다시 통제권..
파이썬과 비동기 프로그래밍 #1, 비동기 프로그래밍이란 비동기(Asynchronous)란? 이해를 돕기 위해 약간은 비현실적인 예를 들어보겠습니다. 여러분들은 10대의 세탁기를 돌리고, 10대의 커피포트에 물을 끓여야 합니다. 이 일을 하기 위한 방법은 아래와 같이 두 가지 방법이 있습니다. 첫번째 방법 1번 세탁기를 돌린다. 1번 세탁기가 완료될 때까지 기다린다. 1번 세탁기에서 빨래를 수거한다. 2번 세탁기를 돌린다. 2번 세탁기가 완료될 때까지 기다린다. 2번 세탁기에서 빨래를 수거한다. ... (위의 과정 반복) 10번 세탁기를 돌린다. 10번 세탁기가 완료될 때까지 기다린다. 10번 세탁기에서 빨래를 수거한다. 1번 커피포트에 물을 끓인다. 1번 커피포트의 물이 끓기를 기다린다. 1번 커피포트의 물로 녹차를 탄다. 2번 커피포트의 물을 끓인다. 2번..
파이썬의 컨텍스트 매니저 (Context Manager) 에 대해 알아봅시다. 기초 컴퓨터에서 사용할 수 있는 리소스는 제한적입니다. 따라서 사용한(acquired) 리소스는 종료해주는 것(released)이 중요합니다. 그렇지 않다면 프로그램이 종료된 이후에도 사용한 리소스가 계속 열려있는 resource leak현상이 발생합니다. f = open('memo.txt', 'r') print(f.read()) 위의 코드처럼 파일을 열고 닫아주지 않는다면, 파일이 계속 컴퓨터에 남아있을 확률이 있습니다. (대부분 Python이 종료해준다고 하긴 합니다.) >> Hello, World따라서 아래와 같이 열었던 파일을 닫아주어야 합니다. f = open('memo.txt', 'r') print(f.read()) f.close() 하지만, 코드가 복잡해지다보면 파일을 닫기전에 에러가 발생할..
파이썬 단위 테스트 모듈 unittest에 대해 알아보자 기초 TDD (Test Driven Development) 또는 Test Case를 작성하기 위한 파이썬 내장 모듈입니다. unittest.TestCase를 상속받아 Custom Test Class를 정의합니다. test_로 시작하는 함수를 정의하면 unittest가 실행되면서 해당 함수를 테스트합니다. 예제 import unittest def add_two_numbers(a, b): return a + b class TestAdd(unittest.TestCase): def test_numbers_3_4(self): # 3+4 must be 7 self.assertEqual(add_two_numbers(3, 4), 7) def test_numbers_0_0(self): # 0+0 must be 0 sel..
벡터공간에 대해서 알아보자 (벡터, 벡터공간, 선형방정식) 지난 시간에는 선형대수를 왜 배워야하는지, 또 무엇을 배우는지를 살펴봤습니다. 그리고 벡터와 스칼라에 대해 잠시 다뤘는데요. 오늘은 벡터에 대해 다시 알아보고, 벡터들이 이루는 공간인 벡터공간에 대해 알아보겠습니다. 벡터 (Vector) 지난 시간에 설명했듯이, 벡터는 크기와 방향을 가진 성분입니다. 따라서 다음과 같이 좌표계에 화살표를 이용해 나타낼 수 있습니다. 하지만 4 차원, 5 차원 이상의 벡터를 좌표계에 표시하기는 불가능합니다. 또한 벡터를 화살표로 나타낼 수 있다 해도, 늘 이렇게 표현하기는 불편하죠. 따라서 숫자의 나열로도 나타낼 수 있습니다. 행벡터와 열벡터로 나타낼 수 있지만, 주로 벡터라고 하면 열벡터를 의미합니다. 벡터공간 (Vector Space) 지난 시간에 선형대수는 벡터공간을..
선형대수 왜 공부해야할까? 선형대수 왜 공부할까? 요즘 KOCW 에서 이옥연 교수님이 강의하시는 선형대수학 강의를 듣고 있습니다. 현재 앞부분만 들었는데, '어떻게 이렇게 선형대수를 잘 가르치시나'하는 생각이 듭니다.. 대학교 1 학년 때 학교에서 선형대수를 들었고, KOCW 에서 이상화 교수님의 선형대수 강의를 들었지만 왜 선형대수, 벡터, 행렬 같은 것들을 배우는지 막막했는데 이 부분에 대한 명쾌하고 쉬운 답을 주십니다. 아래는 이옥연 교수님의 강의 링크입니다. KOCW 선형대수학 및 연습 선형대수는 무엇을 공부하는 학문인가? 선형대수는 기본적으로 벡터공간을 공부하는 학문입니다. 벡터공간을 이해하기 위한 도구로서 행렬, 내적, 기저, 등을 배웁니다. 벡터공간에 대한 자세한 정의는 컨텐츠를 연재하면서 선형대수를 공부하면서 차차 ..
ANACONDA 자주쓰는 명령어 정리 ANACONDA 가상환경 생성 conda create --name *패키지명에 anaconda를 써주면 anaconda의 모든 패키지를 설치 *한 번에 여러 패키지를 하려면 여러 패키지를 띄어서 써주면 됨 예제 conda create --name ml anaconda conda create --name ml pandas numpy matplotlib scikit-learnANACONDA 가상환경 제거 conda remove --name --all 예제 conda remove --name ml --allANACONDA 설치된 가상환경 목록보기 conda env list ANACONDA 가상환경 활성화 conda activate 또는 activate (윈도우 cmd) 또는 source activate (맥/..