파이썬 이것저것 78

[python] docker stack + nginx를 이용한 grpc inference 서버 구축

docker swarm 네트워크를 사용하면 각각의 분산된 PC를 하나로 묶을 수 있고, docker swarm의 ingress 네트워크를 사용하여 클러스터를 구축 가능하고, 이를 사용하여 각각 분산된 PC에 docker시스템을 관리 할 수 있다. 특히 ingress네트워크 상에서 docker 시스템 간 로드밸런싱이 가능하여 여러대의 PC에 손쉽게 Inferecne Docker를 구축이 가능하다. 그런데 모든 상황에서 이 로드밸런싱 기능을 사용할 수 있는 건 아니였다. 프로젝트 진행 중, 기존 https 방식의 REST호출을 사용할 때는 분산 로드 밸런싱이 됬지만, GRPC 통신 방식을 사용하면, 로드 밸런싱 기능을 사용할 수 없었다. GRPC 통신을 통해서 로드밸런싱을 하려면 NGINX 프록시 서버로 사..

yolo-nas 학습하기[Python]

https://www.youtube.com/watch?v=V-H3eoPUnA8 2023년 초 roboflow에서 출시한 yolov5의 후속작 yolov8과 Object Detection분야에서 다시 SOTA를 찍은 yolov6 두가지를 정확도와 속도에서 더 좋은 결과를 보여주는 yolo-nas를 학습하는 방법을 공부해 보았다. https://www.youtube.com/watch?v=91p2SkSuZkc 환경은 코랩에서 진행했다. https://colab.research.google.com/drive/1yHrHkUR1X2u2FjjvNMfUbSXTkUul6o1P?usp=sharing DeciYoloCustomDatasetQAFineTuning.ipynb Colaboratory notebook colab.r..

[python] 백준 5597번 과제 안 내신 분..?

https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 풀이 student = [i+1 for i in range(30)] for _ in range(28): n = int(input()) student.remove(n) student.sort() for i in student: print(i)

[백준] 10813번: 공 바꾸기

https://www.acmicpc.net/problem/10813 10813번: 공 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 www.acmicpc.net N, M = map(int, input().split()) n_list = [i for i in range(1,N+1)] for _ in range(M): i, j = map(int, input().split()) ival, jval = n_list[i-1], n_list[j-1] n_list[i-1] = jval n_list[j-1] = ival for i in n_list: print(i, en..

[Python] 람다 표현식 사용하기

람다 표현식 : 익명함수를 통해 다른 함수의 인수를 넣을 때 사용합니다. def puls_ten(x): return x + 10 puls_ten(1) 해당 함수를 람다식으로 작성 lambda x: x + 10 해당 방법으로는 함수를 호출이 불가함 따라서, 람다식에 변수를 할당해주어야 합니다. puls_ten = lambda x: x + 10 puls_ten(1) 람다식 자체를 호출하려면 괄호로 묶어주면 됩니다. (lambda x: x + 10)(1) 람다의 표현식 안에는 새변수를 만들 수 없으며, 반환값 부분은 변수 없이 식 한줄로 표현 해야 합니다. 단, 람다 표현식 바깥에 있는 변수는 사용이 가능합니다. ## 매개변수 x와 람다 표현식 바깥에 있는 변수 y를 더해 반환 y=10 (lambda x: x..

[Python] 프로그래머스 코드 처리하기

https://school.programmers.co.kr/learn/courses/30/lessons/181932 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr enumerate를 사용하면 쉽게 풀 수 있다. def solution(code): mode = True ret = '' for idx, val in enumerate(code): if mode: # mode = 0 if val != '1' and idx % 2 == 0: ret = ret + val elif val == '1': mode = False else: # mode = 1 if val..

[Python] 배열의 길이를 2의 거듭제곱으로 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/181857 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요. def solution(arr): cnt = 0 while len(arr) != 2 ** cnt: if len(arr) == 2 ** cnt: break ..

[Python] 프로그래머스 예산

https://school.programmers.co.kr/learn/courses/30/lessons/12982?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(d, budget): d = sorted(d) i = 0 cnt = 0 if len(d) == 1: if d[0] > budget: return 0 else: return 1 for char in d: if cnt >= budget: break i += 1 cnt += char if cnt == budget: return i elif ..

[Python] 프로그래머스 부족한 금액 계산하기

https://school.programmers.co.kr/learn/courses/30/lessons/82612 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(price, money, count): rePrice = 0 total =0 for _ in range(count): rePrice += price total += rePrice if total < money: return 0 return total - money

[Python] 프로그래머스 과일 장수

https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(k, m, score): answer = [] n = 0 cycle=len(score) // m # 사이클 수 idx = m ci = 1 # 순번 sort_score = sorted(score, reverse=True) while True: if cycle == 1: # 1번만 돌때는 바로 끝냄 price = calbox(k, m, sort_score, n) an..