일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- docker
- DeepLearning
- vscode
- datascience
- Kaggle
- GitHub Action
- rnn
- 코딩테스트
- NaverAItech
- python
- wandb
- autoencoder
- PytorchLightning
- 프로그래머스
- github
- GIT
- NLP
- 알고리즘
- pytorch
- Matplotlib
- GCP
- 네이버AItech
- Kubernetes
- FastAPI
- pep8
- torchserve
- FDS
- leetcode
- 완전탐색
- 백준
- Today
- Total
목록python (20)
Sangmun
Producer-consumer Problem(생산자 소비자 문제는) threading이나 프로세스 동기화 이슈와 관련된 computer science에서 자주 볼 수 있는 문제이다. 현재 글에서는 python의 Lock을 이용하여 Producer-comsumer problem을 어떻게 해결하는지 다루고자 한다. 다음과 같은 예제가 있다. 외부로부터 message를 수신하는 작업과 수신한 message를 db에 저장하는 작업이 있다. 이때 외부에서 들어오는 message는 언제 들어올지 모르며 때때로 너무 많은 양이 들어올 때가 있다. 이 message를 수신하는 작업이 Producer이다. 수신한 message를 db에 저장하는 작업 Consumer이며 작업의 속도가 상대적으로 느리다. 따라서 외부에서..
python에서 thread는 동시성을 가지는 코드를 작성을 위해 필요로 한다. 하지만 multiprocessing과는 다르게 실제로 여러 개의 작업을 동시에 하는 것은 아니다. 단지 하나의 코어로 여러 작업을 왔다 갔다 하면서 동시에 처리하는 것처럼 보일뿐이다. Thread는 보통 외부의 이벤트를 오래동안 기다려야(I/O bound) 하는 작업에 적용하면 효과적이다. 하지만 많은 CPU연산을 필요로 하는 작업에는 Thread 보단 multiprocessing이 어울린다. Python Thread의 예시 아래 코드는 main section에서 thread를 하나 생성하여 원하는 함수를 실행하는 코드이다. threading.Thread 함수안에 target으로 실행하고자 하는 함수와 args에 변수를 넘겨..
정규표현식에서의 메타 문자란 원래 의미로 사용되지 않고 특별한 의미로 사용되는 문자를 말한다. 정규표현식에서의 메타 문자는 아래와 같은 것들이 있다. . ^ $ * + ? { } [ ] \ | ( ) 문자 클래스 '[ ]' '[ ]'사이의 문자들과의 매치라는 의미를 가지며 [abc]라는 정규표현식이 있다면 'a,b,c' 중 한개의 문자와의 매치를 의미한다. 예시를 들어보면 아래와 같이 적용이 된다. "a"는 정규식과 일치하는 문자인 "a"가 있으므로 매치 "before"는 정규식과 일치하는 문자인 "b"가 있으므로 매치 "dude"는 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않으므로 매치되지 않음 '[ ]'안의 문자 사이에 하이픈을(-)을 사용하면 범위를 의미한다. 즉 [a-..
flake8과 같은 Link 도구를 이용하여 코드를 검사했다면 이제는 코딩 스타일의 통일이 필요한 부분을 알아서 수정을 해줘야 하는데 그러한 역할을 해주는 패키지가 python의 black이다. black은 현시점 기준 formatter 중에서 가장 start의 개수가 많은 프로젝트이다. https://star-history.com/#psf/black&google/yapf&hhatto/autopep8\ 설치 pip install black 사용방법 black {파일 또는 폴더 이름} 위와 같이 사용을 해주면 파일들이 코딩 컨벤션에 따라 자동으로 수정이 된다. 어떻게 수정이 되는지는 아래의 black playground에서 직접 실험을 해볼 수 있다. https://black.vercel.app Black..
flake8은 pep8 코딩컨벤션을 준수하는 Lint를 위한 패키지이다. 정적으로 코드를 검사를 해주면 수정은 해주지 않는다. 수정을 해주는 패키지는 black으로 다음번에 다룰 예정이다. flake8 설치 pip install flake8 flake 사용법 아래와 같이 파일명을 입력하거나 파일명을 입력하지 않으면 폴더 전체를 검사한다. flake8 # 폴더 전체 검사 flake8 file_name.py # 한개의 파일만 검사 flake8 설정파일 .flake8 file을 생성해주어 아래와 같은 내용을 입력하면 제외할 폴더와 파일은 제외를 하고 또한 무시할 에러메시지도 설정 할 수 있따.. [flake8] exclude = .git, .gitignore, *.pot, *.py[co], __pycache_..
코딩테스트에서 종종 나오는 정수론 문제 관련한 코드를 정리해보고자 한다. 유클리드 호제법에 대한 설명 https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 ko.wikipedia.org * Greatest common divisor(gcd) def gcd(a, b): while b > 0: a, b = b, a % b return a..
https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간 ko.wikipedia.org 알고리즘 문제에 종종 등장하는 단골 문제이다. 위키에 나온 파이썬 코드는 아래와 같다. def prime_list(n): # 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주) sieve = [True] * n # n의 ..
https://www.acmicpc.net/problem/11758 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net 기하학의 기본적인 문제라고 한다. 푸는 방법이 이미 널리 알려진 듯 하다. https://www.acmicpc.net/blog/view/27 점 3개의 방향성을 나타내는 CCW 세 점 P1(x1, y1), P2(x2, y2), P3(x3, y3)가 있을 떄, 점 3개를 이은 선분은 어떤 방향성을 나타내게 될까요? 11758번 문제..