Backend/Python
-
[병렬 처리] python multithreading 도입기 (feat.multiprocess 차이)Backend/Python 2024. 2. 23. 15:28
필자는 현재 프로젝트에서 배치작업을 했었는데, 이상치 검증 로직 때문에 배치 시간이 무려 1분이나 되는 것을 발견하였다! 사실은 1분 30초 정도였는데, 구역을 나누어 진행하여 1구역당 50초 정도 소요되었다.하지만, 적재되어 있는 데이터가 늘어날수록, 소요 시간이 더 늘어날 것 같았고, 10분 단위 대시보드 프로젝트에서는 1분 1초가 소중하기 때문에 병렬 처리를 도입하기로 하였다. 먼저, 병렬처리를 하기에 앞서, 항상 언급되는 부분 Multithreading 과 Multiprocessing 에 관해 비교해보자 -> 필자도 항상 머리속에 있다고 생각하지만, 가끔 헷갈리는(?) 부분이라 같이 정리하고자 한다. 그렇다면, 가장 큰 차이점은 무엇일까?바로 Thread 와 Process 이다.나아가 이것은 c..
-
Python에서 @staticmethod, @classmethod, instance method,개념 정리Backend/Python 2024. 2. 16. 11:32
필자는 다른 프로젝트에서 @classmethod를 사용하는 것을 보았다. python에서는 자주 사용하지 않았는데, 이번 기회에 개념을 정리하고 SQLALchemy에 적용하기 위해 알아보았다. 먼저, method에는 크게, instance method, static method, class method가 있는데, 그 중 가장 많이 쓰이는 instance method는 사실 우리가 가장 많이 사용하고 있었다. 먼저, Shape() 라는 클래스를 하나 만들었고, 클래스 변수를 선언했다. -> 클래스 변수는 내외적으로 호출(Shape.cnt) 할 수 있다! class Shape(): # 클래스 변수 cnt = 0 def __init__(self,width,height): self.width = width se..
-
Python batch 파일 윈도우 스케줄러에 등록하기Backend/Python 2024. 1. 16. 11:10
필자는 저번 포스팅에서 Python으로 만든 백엔드를 실행파일로 만들어 윈도우 서비스에 등록했다. 이에 따라, 배치 파일(Python으로 작성)도 윈도우 서비스에 등록하려고 하는데, 윈도우 같은 경우 `스케줄러` 라는 기능이 따로 존재한다. -> 윈도우 스케줄러에 등록해보자 1. 실행시킬 파일(main.py) 경로에 .bat 라는 파일을 작성한다. 2. .bat 작성 내용은 다음과 같다. @echo off cd C:\test cd .venv\Scripts call activate python C:\test\app\main.py 필자의 경우, 가상환경에서 진행하기 때문에 가상 환경이 실행되는 경로를 적어주고, 마지막으로 call을 통해 가상환경을 실행시켜 준다! 이후, 파이썬 실행 경로와 파이썬 명령어를 ..
-
Pyinstaller를 사용해서 python 실행 파일 만들고, window 서비스에 등록하기Backend/Python 2024. 1. 15. 14:56
필자는 window에 python을 배포해야 했는데, 이때 사람들이 실행파일을 사용한다는 것을 알게되었다. 실행 파일로 만들기 위해서는 pyinstaller 라는 라이브러리가 필요하다. 사용방법은 아주 간단한데, 필자는 FastAPI를 묶는 과정에서 몇번의 오류가 발생했지만 결국 해결하였다! 먼저, 가상환경 상태에서 pip install pyinstaller를 한다. 그 이후, main.py가 있는 경로에서 (cmd창) 예를 들면 C:\test> pyinstaller -F main.py 이런식으로 명령어를 쳐주면 완성! ( > 필자는 -F 옵션을 사용했는데, 실행 파일로 묶을 때 1개로 깔끔하게 나오도록 하는 옵션이다. 그 외 다른 옵션들도 있으니 pyinstaller 사용법으로 검색하면 좋을것 같다.)..
-
파이썬 SMTP이용하여 email 보내기Backend/Python 2024. 1. 15. 11:13
필자는 프로젝트 중에 각 구역 별로 이상치 & 결측치 발생하는 알림을 이메일 발송하도록 하는 부분이 필요했다. 따라서, SMTP & IMAP 을 이용하였으며, 그 중 파이썬에서 smtplib 라이브러리를 사용하였다. 이 전에 필자는 SMTP와 IMAP에 대한 개념을 잘 몰랐는데, 이번 기회를 통해 정리해보았다. SMTP란? email을 보내는 데 있어서 업계 표준 프로토콜이다. IMAP란? 인터넷 메시지 액세스 프로토콜(IMAP)이며, 이메일을 받는 서버로부터 이메일 메세지를 관리하고 이메일을 꺼내서 가져오는데 사용되는 프로토콜이다. client A가 SMTP를 이용하여 서버로 메일을 보냄 → 그리고 다시 한번 SMTP를 통해 B가 있는 서버와 메일을 주고 받음 - > 마지막으로 B의 서버가 IMAP을 ..