Python345 2022년 3주차 '기록의 시작' Weekly Work 이번 주는 기업 협업 3주 차였다. 과제는 '실시간 호가 데이터를 가져오고 DB에 파일 시스템을 활용하여 벌크로 저장하는 것'이었다. 실시간 호가 데이터를 불러오기 위해 스레드를 공부해 추가했다. 결과적으로 데이터는 받아왔지만 뭔가 꺼림칙하다. 코드는 동작하지만 그 동작원리를 알 수 없기 때문이었다. com객체와 thread, message pump가 어떤 원리로 동작하는지 아직 명확하게 이해하지 못했다. 파일 시스템을 이용해 데이터를 모아서 한 번에 저장할 수 있다는 것을 알게 되었다. 처음에 with문이 무슨 역할을 하는지 몰랐으나 파이썬 강의를 추가로 들으면서 close() 메서드 역할이 포함되어 있다는 것을 알게 되었다. 기업 협업이 만족스럽지는 않다. 사실 주어진 과제는 훨.. 2022. 1. 17. 파이썬 멀티 스레딩 프로세스와 스레드 확인 os.getpid() : 현재 프로세스 아이디(PID)를 반환한다 threading.get_ident() : 현재 스레드의 식별자를 반환한다 print(f"{os.getpid()} process | {threading.get_ident()} url : {url}") 아래 실습 코드를 실행해보고 '싱글 스레드'와 '멀티 스레드'의 결과 값을 비교해보자 # 실습 코드 import requests import time import os import threading from concurrent.futures import ThreadPoolExecutor ''' concurrent.futures 모듈은 비동기적으로 콜러블을 실행하는 고수준 인터페이스를 제공합니다. 비동기 실행은 (Thre.. 2022. 1. 16. 동시성(병행성) vs 병렬성 동시성(Cuncurrency) 논리적 개념 at the same time (X) 동시성이란 스위칭으로 한 번에 여러 작업을 동시에 다루는 것을 의미 → 싱글 프로세스, 싱글 스레드가 스위칭을 하면서 여러 작업을 수행 → 멀티스레드도 스위칭하며 작업 가능 비유) 하나의 로봇이 왔다 갔다 하며 작업을 수행 (바운드될 때마다 스위칭) 병렬성(Parallelism) 물리적 개념 at the same time (O) 병렬성은 한 번에 여러 작업을 병렬적으로 처리하는 것을 의미 → 멀티 프로세스, 멀티 스레드를 통해 동시에 여러 작업을 수행 → 싱글 스레드는 불가능 비유) 여러 로봇이 동시에 각자 맡은 작업을 수행 유의할 점 동시성과 병렬성은 함께 공존할 수 있다. 예를 들어 병렬적으로 작업을 수행하면서 그 하위에.. 2022. 1. 16. 파이썬 코루틴 활용 웹사이트 데이터 가져오기 1. session을 통해 url에 접속한다 2. request.get을 통해 데이터를 가져온다 3. session을 닫고 걸린 시간을 측정한다 * session을 간편하게 닫기 위해 with문을 사용했다. with문을 사용하면 with 블록을 벗어나는 순간 자동으로 close되어 편리하다. 4. 일반 코드와 코루틴 코드의 결과를 비교해본다 일반 코드의 경우(동기) >>> 15.04025387763977 초 ''' 동기로 코드를 작성할 경우 15.04025387763977 초 소요 ''' import requests import time def fetcher(session, url): with session.get(url) as response: return response.te.. 2022. 1. 16. 하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 예 #3 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다. 입출력 예.. 2022. 1. 16. 파이썬 코루틴 루틴이란? 일련의 명령 흐름 (코드의 흐름) 메인 루틴 프로그램의 메인 코드의 흐름 서브 루틴 ( = 함수 ) 함수나 메서드 (메인 루틴을 보조하는 역할) 하나의 진입점과 하나의 탈출점이 있는 루틴 코루틴 서브루틴의 일반화된 형태 다양한 진입점과 다양한 탈출점이 있는 루틴 await에 의해 진입과 탈출점이 추가됨 비동기적 코드를 가능하게 함 await 은 어웨이터블 객체 앞에 사용한다 어웨이터블 객체는 코루틴, 태스크 및 퓨처를 의미한다 코루틴 함수 time.sleep() → X asyncio.sleep() → O 함수 정의 시 async 를 붙이는 경우 → O 태스크 객체 태스크를 예약할 때 사용 task1 = asyncio.create_task(func()) await task1 # 이렇식으로 코드 .. 2022. 1. 15. 이전 1 ··· 53 54 55 56 57 58 다음