본문 바로가기

파이썬17

[ Python ] Dictionary , Set Hash 이용해보자 Dictionary 와 Set 은 Hash 테이블 구조를 가지고 있다. 그래서 삽입과 삭제, 탐색 하는 연산의 시간복잡도는 O(1) 이다. Set 활용 Tip ! 값을 찾기 위해 list 에서 in 을 사용하게 된다면, 해당 연산의 시간 복잡도는 O(n) 일 것이다. 하나의 데이터를 찾기 위해 최대 데이터 개수 n 만큼 순회를 해야한다는 것인데, 이를 set 을 이용하면 좋다! 간단한 테스트를 위해 주피터노트북을 활용했다. 아래 예시는 list 를 하나하나 순회하면서 데이터를 찾는 것이다. 아래 예제는 총 7초의 실행시간을 가졌다. 반면 set 을 이용한 아래의 예제는 약 4초의 실행시간을 가졌다. 이렇게 단순한 예제에서도 시간 차이가 꽤 나는 것을 확인할 수 있다. 앞으로 리스트 내에서 in 연산을 통.. 2022. 9. 12.
[ Python ] List Comprehension| 리스트 컴프리헨션 대괄호와 list()의 성능 차이 사실 이건 포스팅하기도 조금 민망할 정도로 짧긴한데, 이런건 내가 직접 실행해봐도 느낄 수 없는 부분이라 잊으면 그냥 그대로 내 손해다. 그래서 작성해본다. 리스트 컴프리헨션은 아래와 같다. a = [i for i in range(10)] b = list(i for i in range(10)) print(a) print(b) 리스트 내에서 for 나 if 문을 쓰는 것이다. 코드를 살펴보면 a 와 b 둘 다 같은 동작을 하고 있다. 실행 결과도 동일하다. 그렇지만 나는 앞으로 [식 for 변수 in 리스트] 의 형식을 써야겠다. 일단 둘은 같은 동작을 하지만 성능이 대괄호를 사용하는게 더 좋다고 한다. 심지어 list 방식은 C스타일이라 파이썬답지 않은 코드라고.. ㅎㅎ.. 일단 성능 면에서 더 우수하다.. 2021. 12. 16.
주석(comment) TODO 이외에도 FIXME, BUG, NOTE 등과 같이 코드는 아니지만 일관된 주석을 사용합니다. 주석을 다는 것은 프로그래머들 마다 다 다르지만, 이렇게 다는 경우가 많다고 한다. https://www.jetbrains.com/help/pycharm/using-todo.html TODO comments | PyCharm www.jetbrains.com 특히 파이참에서는 저런 주석에 대한 하이라이트 기능도 따로 제공하고 있는 듯 하다. 시간날때 한번 훑어보면 좋을 것 같다. 확실히 저렇게 달면 나중에 찾기도 편하고, 보기 좋을 듯 하다. 2021. 12. 14.
[ Python ] 파이썬 스케줄러 작성하기(APScheduler) - BlockingScheduler | 파이썬 반복 작업 수행 서버 위에서 항상 돌아가는 프로그램을 만드는 중이다. 해당 프로그램이 하위 프로세스를 만들어서 계속해서 어떤 동작을 수행 후 데이터를 출력하고 있다. 이때, while 문을 통해 해당 프로세스의 종료를 계속해서 확인하도록 작성했는데 이 while 문이 약간 불안하다고 하셨다. 휴지시간 없이 너무 cpu를 혹사시킬 것 같아 스케쥴러를 하나 두고 일정 시간동안 프로세스를 실행시키는 방식으로 바꿔보는 것은 어떠냐고 제안을 주셨다. 냉큼 받아들여서 바로 스케줄러를 작성해보고 있다. 생각보다 간단하고 강력한 것 같아 앞으로 여러곳에 써먹을 곳이 많을 것 같다. 이번 포스팅에서는 특정한 시간에 프로그램을 실행시키는 cron 이 아닌 일정 주기로 도는 interval 만 예시로 들 것 같다. 만약 특정 시간에 프로그.. 2021. 12. 14.