본 글은 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..
전체 글
Here I am!하나의 스레드가 두 개의 작업을 연속적으로 수행한 것에 비해, 두 개 스레드가 각각 하나의 작업을 수행했을 때 더 오래걸렸다고 합니다. 왜 이런 일이 발생했을까요? 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..
Python에서 수명이 다한 객체는 어떻게 메모리가 회수되나요? 더보기 Python에서 수명이 다한 객체는 Reference Counting을 통해 메모리가 회수됩니다. 모든 객체마다 자신이 참조되고 있는 개수를 들고 있다가 이 숫자가 0이 되면 메모리에서 삭제하는 방식 입니다. Cyclic Garbage Collection 에 대해 설명해보세요 더보기 linked list 객체와 같이 순환 참조(reference cycle)이 있는 객체에 대해서는 Reference Counting 만으로 객체를 제거할 수 없기 때문에 cyclic garbage collection을 사용합니다. 모든 객체에 대해 reference를 graph를 그리며, 접근 불가능한 cycle을 찾아 garbage에 해당하는 객체를 찾..
devDependencies에 husky, prettier Node.js 모듈 추가 npx npm install husky eslint prettier lint-staged --save-dev husky 초기 세팅 husky init을 통해 초기 세팅을 해주면, 알아서 .git에 hook 관련된 파일을 넣어줍니다. [Docs에 나온 방식] 그러나 저희 프로젝트는 .git이 npm modules와 다른 위치에 있기 때문에 그냥 husky init을 할 경우, .git을 못찾는 에러가 발생하게 됩니다. 첫 번째 시도 ( Fail ) https://stackoverflow.com/questions/74129312/how-to-configure-husky-when-git-is-in-a-different-fold..