[ Python ] 파이썬 스케줄러 작성하기(APScheduler) - BlockingScheduler | 파이썬 반복 작업 수행
·
Archive/Develop
서버 위에서 항상 돌아가는 프로그램을 만드는 중이다. 해당 프로그램이 하위 프로세스를 만들어서 계속해서 어떤 동작을 수행 후 데이터를 출력하고 있다. 이때, while 문을 통해 해당 프로세스의 종료를 계속해서 확인하도록 작성했는데 이 while 문이 약간 불안하다고 하셨다. 휴지시간 없이 너무 cpu를 혹사시킬 것 같아 스케쥴러를 하나 두고 일정 시간동안 프로세스를 실행시키는 방식으로 바꿔보는 것은 어떠냐고 제안을 주셨다. 냉큼 받아들여서 바로 스케줄러를 작성해보고 있다. 생각보다 간단하고 강력한 것 같아 앞으로 여러곳에 써먹을 곳이 많을 것 같다. 이번 포스팅에서는 특정한 시간에 프로그램을 실행시키는 cron 이 아닌 일정 주기로 도는 interval 만 예시로 들 것 같다. 만약 특정 시간에 프로그..
[ Python ] == , != 와 is, is not 의 차이점
·
Archive/Develop
파이썬으로 코드를 작성하다가 어떤 함수 a 의 리턴값과 None 타입을 비교하는 if문을 작성했다. 처음에는 아무 생각 없이 == 으로 작성했다가, 생각해보니까 PEP8 에 의하면 None 과의 비교는 is 가 적합할 것 같아서 급하게 수정했다. 근데 왜 바꿔야하는지, 더 나아가 == 이나 != 연산자가 이미 있는데 왜 is 와 is not이 있어야하는건지 궁금해서 좀 서칭을 해봤다. 우선 아래 코드를 실행해보자. 아주 간단하다. print(3 == 3.0) print(3 is 3.0) 실행 결과는 True 와 False. 분명 동일한 역할을 하는 연산자 같은데, 왜 두 개의 연산 결과가 다른 걸까? 일단 == 과 != 는 값 자체를 비교하고, is 와 is not은 객체를 비교한다. 3과 3.0은 어쨌..
[ Python ] 파이썬 비동기 처리 | asyncio | 비동기란 무엇인가 | 비동기 예제
·
Archive/Develop
비동기 함수란? 비동기 함수에 대해 서술하기 전, 동기 함수의 개념부터 잡고 가야한다. 우리가 통상적으로 써왔던 함수가 동기 함수인데, def test(): print('1') print('2') print('3') def main(): test() main() 위 코드를 보면, main 함수는 test를 실행하고, 1,2,3 이 순서대로 출력된 이후 종료된다. main 함수는 test 함수가 종료될 때까지 기다리는 것이다. 너무 당연한 말 같다. 근데 만약, main 이 test 함수가 1,2,3을 출력하는 동안에 처리해야하는 일이 있다면 어떻게 해야할까? 예시는 이렇지만, 만약 엄청나게 많은 데이터를 출력해야하는 상황이라면? 마냥 test 함수가 종료되어 정상적으로 return 되기만을 기다리는 것은..
[ Error / 해결됨 ] AttributeError: 'str' object has no attribute 'decode'
·
Archive/Develop
역시 에러의 늪에서 헤엄치는 나... 만약 이 에러가 장고를 사용하고 있는데 나는 에러라면, 아래 두번째 방법을 보시길 바랍니다. # 방법 1. 찾아보니 h5py가 3.x.x 버전 일때 생기는 문제라고 한다. 바로 pip list 쳐서 확인해보니 ㅎㅎ... 그랬다. 다운그레이드 해주면 된다. pip install h5py==2.10.0 --force-reinstall 강제로 재설치해버리면 됩니다.... # 방법 2. 장고를 쓰고 있는데 이런 에러가 난다? 당신의 장고는 예전 버전일 가능성이 높습니다. older django version 에서 일어나는 이슈라서 아래 명령어로 장고를 새로 설치해주시면 됩니다. pip install django==3.0.7 참 편리하게도 예전에 설치된 장고는 알아서 지워지게..