Language

이 글은 이전 글인 “파이썬의 숨겨진 심장박동, 레퍼런스 카운팅”을 보고오시면 더 쉽게 이해하실 수 있습니다. Global Interpreter Lock (GIL)의 역할 Global Interpreter Lock(GIL)은 파이썬 객체에 대한 접근을 보호하는 뮤텍스로, 여러 스레드가 동시에 파이썬 바이트코드를 실행하는 것을 방지합니다. GIL은 경쟁 상태를 방지하고 스레드 안전성을 보장합니다. 위의 글의 내용은 파이썬 위키에서 발췌한 내용입니다. 이는 파이썬 멀티 스레드 환경에서는 동일한 메모리 공간(힙 메모리)를 통해 자원을 공유하기 때문에 각각의 스레드가 이러한 자원을 동시에 사용하고자 할 때 경쟁 상태(Race Condition)를 예방하고 스레드의 안정성을 보장하기 위해 고안된 파이썬 만의 기법..
개요 파이썬은 편리성과 강력함으로 많은 개발자에게 사랑받는 프로그래밍 언어입니다. 파이썬에서 편리함을 주는 기능들은 많이 있겠지만 자동적으로 진행되는 Garbage Collection(GC)도 하나의 큰 요소로 작용합니다. 파이썬의 가비지 컬렉션(GC) 시스템은 자동으로 메모리 관리를 수행함으로써, 개발자가 프로그램의 복잡성에 신경 쓰지 않고 더 중요한 알고리즘 구현과 최적화에 집중할 수 있도록 도와줍니다. 이는 특히 메모리 관리가 필수적인 큰 프로젝트나 서비스에서 더욱 큰 장점으로 작용합니다. 해당 글은 이전 글인 ”파이썬은 모든 것이 객체?”를 보고 오시면 이해가 더 쉽습니다. 파이썬의 가비지 컬렉션 방식 레퍼런스 카운팅(Reference Counting) 마크-앤-스윕(Mark-and-Sweep) ..
※"이것이 코딩 테스트다"의 저자인 나동빈 님의 유튜브 강의를 보고 학습을 위해 정리한 글입니다. 예제 어떠한 수 N이 1이 될 때 까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. N에서 1을 뺀다. N을 K로 나눈다. 예를 들어 N이 17, K가 4라고 가정하자. 이때 1번의 과정을 한 번 수행하면 N은 16이 된다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 된다. 결과적으로 이경우 전체과정을 실행한 횟수는 3이된다. 이는 N을 1로 만드는 최소 횟수이다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야하는 최소 횟수를 구하는 프로그램을 작성하시오 입력조건 - 첫째줄에 N(2
개요 파이썬에서 리스트가 메모리에 배치되었을 때 아래의 그림처럼 할당된 리스트의 마지막 이후처럼 메모리가 사용되고 있을때 리스트의 요소가 추가 되었을 때 어떻게 메모리가 할당 되는가에서 나온 궁금증이다. 일단 파이썬의 리스트 요소들은 연속적인 메모리 주소를 가지지 않는다는 것을 말하고 다음으로 넘어가려고 한다. 파이썬의 리스트 특징 리스트를 선언할 때 크기를 미리 정할 필요가 없다. 리스트를 만들 때 저장할 데이터의 타입을 사전에 정하지 않아도 된다. 한 리스트에 다양한 타입의 데이터를 함께 저장할 수 있다. 파이썬 리스트의 저장 구조 리스트는 이중 포인터가 리스트 요소의 주소를 가지는 배열을 가리키고 주소가 요소를 가리키는 구조로 구현된다. 각 요소는 메모리 상에서 서로 다른 위치에 있을 수 있기 때문..
소수? 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다. 소수 찾는 방법 1. n을 2부터 n-1로 나누었을 때 나누어지지 않으면 소수이다. 시간 복잡도 = $O(n)$ ※ 한개의 소수를 판단할 때의 시간 복잡도이다. for i in range(2, n-1): if n % i == 0: print("소수가 아닙니다.") break else: print("소수입니다.") 2. 1번 방법은 2부터 $\ n-1$ 까지의 수 대입으로 속도가 느리다. 약수의 특징을 통해 효율적으로 접근해보면 $\sqrt{n}$ 까지의 수만 대입해봐도 약수의 여부를 알 수 있다. 약수는 대칭적인 형태를 띄는 것이 초점 N의 약수는 무조건 $\sqrt{n}$의 범위에 존재한다. 시간복잡도 = $O(\sqrt{n}..
hu-nie
'Language' 카테고리의 글 목록