Python

Languages/Python

[pip freeze] pip freeze시에 버전 말고 @ 경로가 찍히는 이슈

pip freeze creates some weird path instead of the package version I am working on developing a python package. I use pip freeze > requirements.txt to add the required package into the requirement.txt file. However, I realized that some of the packages, instead... stackoverflow.com 기본 pip freeze 명령어 pip freeze > requirements.txt 이렇게 pip freeze를 했을때 버전이 안찍히고 이상한 경로가 찍히는 경우가 있습니다. direct reference ..

Languages/Python

[set] set에서 삽입시에 벌어지는 key 테이블 리사이징

파이썬 set object의 C 구현 코드 : https://github.com/python/cpython/blob/main/Objects/setobject.c 일단.. cpython 의 set object의 c코드만해도 2500줄이 넘어간다는 사실에 경악했습니다.. 이렇게 복잡한 자료구조를 나는 여태 이렇게 편하게 쓰고 있었구나...ㄷㄷ 아무튼, set에 들어가는 아이템이 너무 많아지면 set_table_resize 를 통해서 key 리스트를 더 많이 할당한 메모리로 싹 옮긴다고 합니다. 이 임계점에서 순간적으로 연산량이 많아지겠네요. 언제 사이즈가 바뀌는지 출력해봤습니다. 또 pop으로 아이템을 제거하면 다시 줄어드는지도 확인해봤습니다. A = set() now_size = A.__sizeof__()..

Languages/Python

[getsizeof] 객체가 차지하는 byte 출력하기?

(제목에 물음표를 달게 된 이유가 있답니다!) 자료구조의 뒷단에서 벌어지는 일들이 궁금할때는 len 말고 객체에 할당된 메모리를 확인해볼 필요가 있습니다. list와 set에서 remove를 수행할 때 전 당연히 "set이 훨씬 빠를거야. list는 제거 후에 바로 배열을 재설정해줘야하고, set은 hash를 쓰니까 재조정이 더 짧지 않겠어?" 라는 생각이었는데, 의외로 별 차이가 없더라구요. 그래서 각 객체에 할당되는 메모리를 트래킹해보기 위해서 찾아보니 sys에 getsizeof 라는 함수가 있었습니다. sys.getsizeof() import sys A = [] print(sys.getsizeof(A)) docs sys — System-specific parameters and functions T..

Languages/Python

join이 for 보다 빠르다 (제공되는 메서드를 최대한 사용하자)

join이 for 보다 빠르다 파이썬 메서드로 제공되는 기능들은 코더의 편의성도 있지만, 대부분 자료구조 내에서 최적화를 거치기 때문에 직접 구현하는 것보다 빠릅니다. A = ['1','2','3','4'] use_for = '' for a in A : use_for += a use_join = ''.join(A) for += 을 사용하면 A의 원소들을 a로 할당하면서 객체가 생성되고 처리 과정이 늘어납니다. join을 사용하면 더 최적화된 과정이 수행된다고 하네요. split, heappushpop 등등 마찬가지 입니다. 제공되는 메서드를 잘 알고 최대한 활용해주는게 좋습니다.

jamong5
'Python' 태그의 글 목록