Python345 동기 vs 비동기 동기란? 코드가 반드시 작성된 순서로 실행된다 요청 후 응답을 받지 못하면 바운드 상태를 유지한다 이전 요청에 대한 응답을 받아야만 다음 코드를 진행하므로 연산이 느려진다 예) 주문 받은 순서대로 처리한다. 앞선 주문이 완료되지 않으면 다음 주문으로 넘어가지 않는다 비동기란? 코드가 반드시 작성된 순서로 실행되는 것이 아니다 요청 후 응답을 받지 못해도 바운드 없이 다음 코드를 수행한다 이전 요청에 대한 응답을 기다리지 않으므로 동기보다 더 빠르게 연산이 가능하다 예) 주문을 수행하지만 완료되지 않아도 다음 주문을 진행한다 무조건 비동기가 좋을까? 단순한 계산은 비동기로 구현할 경우 코드가 복잡해지고 유지보수가 어려워질 수 있다 다음 단계로 넘어가면 안되는 계산이라면 동기로 구현하자 동기 비동기 비교를 .. 2022. 1. 15. 핸드폰 번호 가리기 문제 설명 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 해결 방법 ''' 1. 마지막 요소 4개를 제외한 문자열을 구한다 2. 마지막 요소 4개를 제외한 수만큼 '*'을 만든다 3. 구한 문자열을 '*'문자열로 바꾸어 반환한다 ''' def solution(phone_number): a = phone_number[:-4] b = '*' * len(phone_number[:-4]) return phone_number.replace(a, b) ''' 입력값 〉"027778888" 기댓값 〉"*****8888" ''' 이 .. 2022. 1. 15. 행렬의 덧셈 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 해결 방법 1. 최종 리턴할 리스트를 생성한다 2. 내장함수 zip과 for를 이용하여 각 리스트의 요소를 분리한다 3. 반복 시 초기화되는 임시 리스트를 생성한다 4. 다시 각 리스트의 요소를 분리한다 5. 분리된 요소끼리 더한 값을 임시 리스트에 추가한다 6. 최종 리스트에 임시 리스트를 요소로 추가한다 7. 최종 리스트를 반환한다 def solution(arr1, arr2): answer_list .. 2022. 1. 15. Linter 와 Formatter 를 사용해서 깔끔하게 코딩하자 Linter란? 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구 Formatter란? 작성한 코드에 대해 설정된 규칙에 의해 정렬을 해주는 기능 Linter 와 Formatter 를 사용하면 저장할 때마다 내 코드를 깔끔하게 정리해준다. 또한 혹시나 잘못 작성된 코드가 무엇인지 알기 쉽게 표시해준다. 보통 가상환경 설정 후 저장을 하면 vsc에서 추가 설치를 권장하는 팝업창이 뜨는데 여기서 이러한 도구들을 설치할 수 있다. (물론 직접 pip같은 툴로 설치해도 무방) 추천하는 도구들을 소개하자면 다음과 같다. black 최근 파이썬 커뮤니티에서 가장 널리 쓰이고 있는 있는 코드 포멧터 autopep8 파이썬 코드를 PEP8 컨벤션에 맞게.. 2022. 1. 14. x만큼 간격이 있는 n개의 숫자 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 해결 방법 def solution(x, n): return [ x * (i+1) for i in range(n) ] 1. 우선 range를 이용해 n의 수 만큼 반복한다. 2. i는 0부터 생성되므로 +1을 하여 실제 반복 수로 바꿔주었다. 3. x 를 (i+1) 과 곱해주어 x가 배수로 생성되도록 하였다. 4. 리스트에 담아 리턴한다. >>> 처음에는 for 문으로 풀었.. 2022. 1. 13. threading 왜 되는 걸까? PumpMessages가 뭐길래? 목표 flask-app 실행 후 Cybos-Subscribe 시작, event 수신 데이터 받아 DB에 저장하기 문제 성공한 줄 알았던 threading이 다시 보니 정상적으로 작동하지 않음 스레드는 나눠진 것 같으나 cybos api의 정보를 정상적으로 받아오지 못하는 상황 cybos api 오류가 뜨거나 flask context app 오류가 뜨거나, 정확한 원인도 파악하지 못하는 상황 행동 일단 리더님께 말씀드리고 피드백에 따라 flask와 분리하여 작게 테스트를 해보기 시작 cybos api 오류의 경우 pythoncom.CoInitialize()로 어떻게든 잡음 서브 스레드의 경우 cybos 인스턴스를 초기화해야하기 때문? >>> 레퍼런스 기존 PumpWaitingMessages 코드를 Pump.. 2022. 1. 13. 이전 1 ··· 54 55 56 57 58 다음