분류 전체보기 (369) 썸네일형 리스트형 프로파일링 (2) - 함수 실행 시간 계산하기 프로파일링 (1) - 줄리아 집합 (Julia set) 지난 포스트에서는 time 라이브러리와 print 함수를 이용해 함수 시작과 끝에서 시각을 측정하는 방식으로 계산했습니다. 하지만 실행 시간은 네트워크, 디스크, RAM 접근하는 시간 및 환경에 따라 편차가 발생하며, 반복 측정하면 정규 분포가 나와야 합니다. (저는 구글 colab pro Jupyter 노트북을 이용했습니다) 데코레이터 print 문 기반 시간 측정은 간단하지만 코드가 금방 더렵해지고 모든 함수 내부에 일일해 print 문을 선언해줘야 하는 귀찮음이 발생합니다. 따라서 시간을 측정하려는 함수 위에 데코레이터를 추가하는 방식으로 조금 더 깔끔하게 구현할 수 있습니다. 다음 코드를 보면 timefn 이라는 데코레이터는 내부에 measu.. 프로파일링 (1) - 줄리아 집합 (Julia set) 파이썬은 C/C++ 과 같은 컴파일 기반 언어에 비해 느립니다. 하지만 프로파일링으로 프로그램 속도의 병목 지점을 찾아 최소한의 노력으로도 성능을 최대한 끌어올릴 수 있습니다. 파이썬에서는 timeit 같은 매직 명령어와 cProfile, line_profiler, memory profiler 등의 여러 프로파일 패키지 및 함수를 제공하며, 이를 통해 병목이 발생하는 함수, 함수 안의 라인까지도 소요 시간/메모리 등을 자세하게 측정할 수 있고 CPU 뿐만 아니라 GPU, 네트워크 대역폭, 디스크 I/O 등 사용되는 거의 모든 리소스에 대해서 측정할 수 있습니다. 줄리아 집합 (Julia set) 줄리아 집합은 가스통 줄리아가 고안한 프랙탈의 일종으로 주어진 복소수 $c$에 대해서 다음 점화식에 따라 정의.. 자료구조 - 리스트와 튜플 (List, Tuple) 리스트와 튜플은 파이썬의 배열 자료구조로서 리스트는 아마 파이썬에서 가장 많이 사용되는 자료구조일 겁니다. 배열에서는 항목의 내용 자체만큼이나 항목이 배치된 순서가 굉장히 중요한데, 리스트는 저장하는 데이터나 배열 크기를 변경할 수 있는 동적 배열이고 튜플은 내용과 순서가 고정된 변경 불가능한 정적 배열입니다. 파이썬은 배열을 생성하기 위해 연속된 시스템 메모리 블록을 할당하고 각 메모리에는 실제 데이터를 가리키는 정수 타입 크기의 포인터가 담겨 모든 타입의 데이터를 저장할 수 있습니다. (이는 numpy array 와 다른 점인데, numpy 배열은 정적으로 타입이 정해져있어 다른 타입의 값을 저장할 수 없습니다) 따라서 연속적인 메모리에 정렬되어 저장된 데이터는 배열의 크기와 상관없이 배열이 시작되는.. 최소 지식의 원칙과 클래스 메소드 클래스를 이용하여 이런 저런 멤버 변수 및 인스턴스 메서드를 정의하다 보면 어떤 한 메서드에서 멤버 변수를 바뀐 것이 다른 메서드에 영향을 끼치는 경우가 많습니다. 클래스의 기능이 복잡해지고 변수가 많아질 수록 이런 경우가 종종 발생하게 되는데요, self 를 이용한 멤버 변수는 어떠한 인스턴스 메서드에서 접근 가능하다보니 이러한 가능성을 최대한 배제시킬 수 있는 설계 원칙이 필요합니다. 이때 머리 속에 담아두어야 할 것은 디미터의 법칙 혹은 최소 지식의 원칙입니다. 최소 지식의 원칙 최소 지식의 원칙은 객체 지향 구현 시 각 모듈 간의 결합도를 최소화하여 설계한다는 원칙입니다. 만일 어떤 한 메소드에 강한 결합도를 가진 변수, 다른 메소드 등이 있다면 결합도가 높은 메소드가 수정될 경우 다른 많은 곳에.. [문법] It could be that + 문장 It could be that + (full setntence, 사실일 수도 있는 내용) "그냥 피곤한 것일 수도 있는데" 같이 조동사가 들어가야 하는 표현을 좀 더 쉽게 표현할 수 있음 She might (could) just be tired It could be that she's just tired "까막었을 수도 있으니까 네가 연락을 해봐" 같이 조동사 + have + p.p 표현을 쉽게 대체 가능 He might (could) have just forgotten. So just call him It could be that he just forgot (까먹은 것일 수도 있으니까) 이런 식/상황일 수도 있지 않을까 라는 맥락에서 대체가 가능함. "과거에 ~ 했다면 현재에 ~ 했을 텐데" 와 같은 .. [영어 표현] play 활용 어린이가 놀다라는 의미로는 괜찮다. I played with my kinds. My kids play here all the time. It's not safe for children to play here. I played with my friends (x) -> met up / spent time 가지고 놀다 / 가지고 장난치다 Stop playing with your food. Don't play with you food. My cat likes to play with my hair. You shouldn't play with people's feelings like that. That's really bad. 무엇을 틀다 play a video / a song (music) / a movie No.. 방정식 해 찾기 - 고정점 반복법 하나의 변수 $x$를 가진 방정식의 해를 구하고 싶습니다. ($f(x) = 0$) 방정식의 해를 구하는 방법은 여러 가지가 있습니다만 이번 포스트에서 알아볼 방법은 고정점 반복법이라는 알고리즘입니다. 고정점 반복법의 시작은 $f(x) = 0$을 $g(x)=x$의 형태로 두고 $y=x$와 $y=g(x)$의 연립방정식을 반복을 통해 푸는 방법으로 특정 조건 하에서 사용할 수 있습니다. 그렇다면 $f(x) = 0$으로부터 $g(x) = x$ 형태로 둔다는 것은 무엇일까요? 예를 들어 $f(x)=x-cos(x)$일 경우, $g(x)$는 $x=g(x)=cos(x)$로 둠으로써 $y=x$와 $y=cos(x)$의 교차점을 찾으면 $f(x)=x-cos(x)=0$의 해를 구할 수 있겠죠. 만약 $f(x)=x^3+cos(.. [문법] 완료 시제 (have + p.p) + 동명사 형태 동명사는 일반 동사에 "ing"를 붙이는 형태인데, having to... / being able to / being 처럼 사용할 수 있고 완료시제 have + p.p 를 동명사의 형태로도 사용할 수 있습니다. 즉, having + p.p 형태로 사용되는데, 이 표현은 "지금 이 얘기는 이런 경험을 한 이후에 그 경험을 토대로 하는 얘기이다" 라는 것을 나타낼 때 사용됩니다. I moved to my current place in October last year. 지금 사는 곳으로 작년 10월에 이사했어요. And I had a lot of initial concers back then because, well you know, there are certain things about a place tha.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 47 다음