AboutPython

· AboutPython
Poetry를 사용하는 이유같이 작업하는 개발자들끼리 같은 버전의 패키지들을 설치하여, 환경을 일치시키게 됩니다.의존성 충돌 문제를 알아서 해결해주고, 패키지를 최신 버전으로 알아서 관리해줍니다.   Poetry 설치Python3.8 이상이어야한다. 아래 가이드 보고 설치 진행https://python-poetry.org/docs/#installing-with-pipx   Git 저장소에 Poetry 초기화하기poetry init 레포 내에서 init을 하면 다음과 같이 초기 세팅과 관련한 메뉴얼이 나옵니다.Main Dependencies 는 Production 전용,Develop Dependencies 는 Dev 전용으로 필요한 패키지를 분리하여 설치하면 된다고 합니다.pyproject.toml이 생성..
· AboutPython
본 글은 https://hyperconnect.github.io/2023/05/30/Python-Performance-Tips.html#2-built-in-list는-충분히-빠르지-않다-필요시-array나-numpy를-사용하자 의 내용을 공부하며 정리한 글 입니다. 어떤 상황에서 Array나 Numpy를 쓰는 것이 적절할까? 내부에 PyObject (객체)를 들고 있는 list PyObject **ob_item; 부분을 보면, 값을 조회하기 위해 참조를 두번 타고 들어가는 것으로 볼 수 있다. 아래는 cpython에서 파이썬 list를 정의하는 부분이다. https://github.com/python/cpython/blob/main/Include/cpython/listobject.h /* Python b..
· AboutPython
하나의 스레드가 두 개의 작업을 연속적으로 수행한 것에 비해, 두 개 스레드가 각각 하나의 작업을 수행했을 때 더 오래걸렸다고 합니다. 왜 이런 일이 발생했을까요? import random import threading import time def working(): max([random.random() for i in range(500000000)]) # 1 Thread s_time = time.time() working() working() e_time = time.time() print(f'{e_time - s_time:.5f}') # 2 Threads s_time = time.time() threads = [] for i in range(2): threads.append(threading.Thre..
· AboutPython
Python에서 수명이 다한 객체는 어떻게 메모리가 회수되나요? 더보기 Python에서 수명이 다한 객체는 Reference Counting을 통해 메모리가 회수됩니다. 모든 객체마다 자신이 참조되고 있는 개수를 들고 있다가 이 숫자가 0이 되면 메모리에서 삭제하는 방식 입니다. Cyclic Garbage Collection 에 대해 설명해보세요 더보기 linked list 객체와 같이 순환 참조(reference cycle)이 있는 객체에 대해서는 Reference Counting 만으로 객체를 제거할 수 없기 때문에 cyclic garbage collection을 사용합니다. 모든 객체에 대해 reference를 graph를 그리며, 접근 불가능한 cycle을 찾아 garbage에 해당하는 객체를 찾..
scone
'AboutPython' 카테고리의 글 목록