모듈의 실행 시간을 측정할 때 간단하게 쓸 수 있는 timeit에 대해 알아봅시다. 사실 2년 전에 쓰려고 했지만, 이제 와서 쓰게 되네요. 먼저 timeit은 문서에서의 소개를 보면, python code의 실행 시간을 측정하는 방법을 제공합니다. 함수 형태로 제공하는 것과 커멘드 라인으로 제공되는 형태가 있습니다. 함수 형태로 제공되는 것 먼저 보겠습니다. stmt는 실행될 문장을 의미합니다. number는 몇 번이나 실행될 것인지를 나타냅니다. 저는, 보통 측정해야 할 부분이 있을 때에는 함수로 빼서 많이 하는 편인데요. 한 번 간단하게 작성해 보도록 하겠습니다. 문서에 따르면, 8 ~ 11번째 줄의 의미는 test()를 50만번 실행할 때 걸리는 시간을 측정하는 것입니다. 문제는, test가 정의..
전체 글 검색 결과
날짜와 시간을 처리할 때 많이 쓰던 strptime과 strftime에 대해서 알아봅시다. 형식 코드들은 상당히 많으니, 이 문서를 참고해 보셔도 좋을 듯 합니다. 먼저 strptime은 string을 파싱해서 datetime object로 돌려주는 역할을 합니다. 이 작업이 왜 중요한 건가? datetime으로 변환을 하면, 특정 날짜로부터 몇 일이 지났는지도 구할 수 있고, 두 날짜의 차이도 구할 수 있기 때문입니다. 이 strptime은 인자를 2개 받는데요. 하나는 string, 다른 하나는 format을 의미하는 string입니다. 이제, YYYY-MM-DD hh:mm:ss 꼴로 들어왔다면, format string은 "%Y-%m-%d %H:%M:%S"로 받아주면 됩니다. 예제를 하나 보겠습니다..
django에서 블로그를 생성할 때 기본 포스트가 생성되게 하고 싶습니다. 혹은, 아이디를 만들 때 포스트가 새로 만들어지게 하고 싶습니다. 이럴 때 어떻게 하면 좋을까요? view 단에서 user가 만들어지면 처리하게 할 수도 있겠습니다만, signal 등으로 처리하는 것도 나쁘지 않은 선택입니다. 다만, 공식 문서에서는 warning에 이해하기 힘든 로직이 작성될 수 있다고 하는데요. 레코드가 추가되는 부분하고, 그럴 때 발생하는 signal을 처리하는 부분이 분리가 되어 있다 보니 그러지 않나 싶습니다. 사실 linux에서 sigaction을 써 보셨다면 공감하실 수도 있을 듯 합니다. 그럼에도 불구하고, 저는 생각보다 유용하게 써먹었습니다. 그래서, 이번 시간에는 signal을 알아보도록 하겠습니..
외부 디펜던시들을 이용하는 경우가 꽤 있습니다. 예를 들어, python310이라던지 poetry 등을 이용할 때입니다. 이들을 이용할 때, 특정 키워드를 찾아야 하는 경우가 있는데요. 찾기 scope를 설정하는 방법을 알아보겠습니다. 그리고, 이것이 디렉토리 검색과 비교했을 때 차이가 있는지도 같이 알아보겠습니다. 먼저, 편집 - 찾기 - 파일에서 찾기를 클릭하시면 이런 창이 뜨게 됩니다. 범위(S)를 누르면 모든 위치 옆에 ...이 있습니다. 이 ...을 클릭해 보겠습니다. 여기서 + 버튼을 눌러보겠습니다. 그러면 로컬, 공유됨을 선택할 수 있습니다. 로컬을 클릭하겠습니다. 새 범위 추가가 있습니다. 이름을 poetry로 하겠습니다. 이제, 프로젝트 폴더와 External Dependencies가 나..
pickle을 loads할 때 신뢰할 수 없는 데이터는 절대로 언피클하지 말라고 되어 있습니다. 왜 그럴까요? 문서의 이 부분에서도 잠깐 언급되는 부분이지만, os.system과 같은 함수들을 수행되게 할 수 있기 때문입니다. 문서에 나온 코드를 조금 응용해서 실습해 보겠습니다. 먼저, b"cos\nsystem\n(S'rm -r *.txt'\ntR."이 pickle.loads의 인자로 들어왔습니다. 해당 python 파일을 실행시켜 보겠습니다. 실행 전과 후를 비교해 보면, txt 파일이 죄다 사라졌음을 볼 수 있습니다. 이것만 봐도 그냥 깡으로 필터링 없이 처리하면 얼마나 위험한지 알 수 있습니다. pickletools의 dis를 이용하면, 해당 byte가 어떻게 해석되는지를 보여줍니다. 요렇게 해석이..
최근댓글