반응형

전체 글 41

세마포어(Semaphore)와 뮤텍스(Mutex)

개요 전에 파이썬의 GIL에 대해서 설명할 때 뮤텍스(Mutex)라는 용어를 언급했었는데 이번에 이 뮤텍스와 뮤텍스의 상위 개념인 세마포어(Semaphore)까지 함께 다뤄보겠습니다. 우선 빠르게 한 줄로 요약하자면, 세마포어와 뮤텍스는 프로세스 / 스레드에서 사용되는 일종의 열쇠(key)라고 생각하시면 됩니다. 뭔 개소린지 모르시겠다면, 정상입니다. 차차 자세히 설명드릴테니 우선 내려보시죠. 사전 지식 - 임계 구역(Critical section) 임계 구역은 다수의 프로세스가 데이터를 공유하며 실행되는 상황에서 각 프로세스가 공유 자원에 접근하는 코드 블록을 의미합니다. 공유 자원이라는 말에서 대충 눈치 채셨겠지만, 다수의 프로세스가 동시에 공유 자원에 접근하여 사용하면 문제가 생기게 됩니다.(이상한..

기타등등 2022.06.24

파이썬(python) - if __name__ == "__main__"을 사용하는 이유(Feat. 네임스페이스)

개요 파이썬 공부를 하다 보면 심심치않게 다음과 같은 코드를 볼 수 있습니다. if __name__ == "__main__": ... 사실 딱히 진입점(C로 따지면 main함수)이랄게 없는 파이썬에서 "굳이 저런걸 써야하나?" 싶었던 분들이 꽤 계실 것 같습니다. 하지만 저 코드는 생각보다 중요한 역할을 맡고 있습니다. 이를 알아보기 전에 먼저 네임스페이스에 대해 알아봅시다. 파이썬에서의 네임스페이스(Namespace) 우리의 영원한 친구이자 동료인 위키백과에서는 네임스페이스가 다음과 같은 뜻이라고 합니다. 개체를 구분할 수 있는 범위 대황신갓키백과 네. 정말 그게 다입니다. 좀 더 풀어서 설명하자면, 어떤 객체를 이름으로 구분할 수 있는 범위를 의미합니다. 여러분도 아시다시피 파이썬에서는 모든 것이 객..

파이썬 2022.04.26

파이썬(python) - GIL(Global Interpreter Lock)

GIL(Global Interpreter Lock) 이란? GIL은 파이썬에만 존재하는 독특한 개념으로 파이썬에서 멀티스레딩을 할 때 다수의 스레드가 동시에 파이썬 바이트 코드를 실행하지 못하게 막는 일종의 뮤텍스(Mutex)입니다. 파이썬으로 작성된 프로세스는 한 시점에 하나의 스레드에만 모든 자원을 할당하고 다른 스레드는 접근할 수 없게 막아버리는데, 이 역할을 GIL이 수행합니다. 즉 멀티스레딩을 하더라도 파이썬에선 우리가 생각하는 것처럼 여러 스레드가 동시에 작업을 하진 않습니다. ​ 깊게 파고들면 복잡하고 꽤 어려운 내용이니 최대한 간소화해서 핵심만 설명드리겠습니다. 파이썬에서의 멀티스레딩 일반적으로 멀티스레딩이라 하면 다음과 같은 상황을 기대합니다. 말 그대로 다수의 스레드가 동시에 각자의 작..

파이썬 2022.02.10

파이썬(python) - 매직 메소드(Magic method)

매직 메소드(Magic method)란? - 매직 메소드는 ​파이썬에서 사용되는 특별한 메소드들을 의미합니다. 스페셜 메소드(Special method)나 던더 메소드(Double UNDERscore method)라고 부르기도 합니다. 이들은 이미 파이썬 내에 정의되어 있고, 클래스 내부에서 매직 메소드들을 오버라이딩 하여 사용할 수 있습니다. 또한 직접 호출해서 사용하지 않고, 정해진 규칙에 따라 알아서 호출된다는 특징이 있습니다. 눈에 띄는 큰 특징이라면 역시 앞 뒤로 언더바가 두 개씩 붙는다는 점이겠네요. (언더바가 붙는 다른 경우에 대해서는 이전 게시글에서 다뤘으니 궁금하신 분들은 참고 바랍니다.) 파이썬(python) - _(언더바, 언더스코어) 파이썬에서 _(이하 '언더바'로 통일)의 역할 다..

파이썬 2021.11.11

파이썬(python) - 클래스(class)의 특징

개요 이번 포스트에서는 파이썬에서 클래스가 가지는 특징에 대해 다뤄보겠습니다. 클래스가 무엇인지, 어떻게 선언하는지 등 기초적인 내용은 다루지 않으므로 유의해주세요. 클래스의 특징 1. 모든 클래스는 기본적으로 object 클래스를 상속받고 있다. - objcet 클래스는 최상위 클래스로서 파이썬에서 선언되는 모든 클래스는 기본적으로 object 클래스를 자동으로 상속받습니다. class test: # 1 pass class test(): # 2 pass class test(object): # 3 pass 따라서 위의 세 가지 방법 중 어떤 방법을 사용하더라도 생성되는 클래스에 차이는 없습니다. 다만 1번, 2번 방법은 구 버전 파이썬(정확히는 파이썬 2의 2.2 이후 버전)에서 호환성 관련 문제를 일으..

파이썬 2021.11.04

파이썬(python) - __str__과 __repr__의 차이

개요 파이썬 클래스의 매직 메소드(Magic Method)중 하나인 __str__ 메소드와 __repr__ 메소드의 차이점에 대해 다뤄보겠습니다. 두 메소드는 겉으로 보기에 같은 기능을 하는 것처럼 보이지만 미묘한 차이가 있습니다. 따라서 그 차이점을 잘 알아두시는 것이 (어디가서 아는척 좀 해보기에)좋습니다. 공통점 두 메소드는 모두 "객체를 문자열로 반환"한다는 공통점이 있습니다. 즉 사용하는 목적에는 차이가 있지만 결국 객체가 어떤 타입을 가졌던 간에 그것을 문자열로서 반환한다는 점이 동일합니다. 많고 많은 자료형 중 하필 문자열로 반환하는 이유는 사람이 알아보기 가장 편한 자료형이기 때문입니다. 사람들은 전부 문자를 쓰고 읽고 보고 듣고 하잖아요? 만약 객체를 문자열이 아니라 이진법으로 표현했다면..

파이썬 2021.10.30

파이썬(python) - Anconda의 필수 명령어들

시작하기 전에 - 파이썬에서의 아나콘다(Anaconda)가 무엇인지 잘 모르시는 분, 아직 설치를 못 하신 분은 이전 게시글을 먼저 확인해 주세요. - 하술할 명령어들 중 괄호() 안의 값들은 선택사항입니다. 파이썬(python) - 아나콘다(Anaconda)란? 아나콘다(Anaconda)란? 아나콘다는 머신러닝이나 데이터 분석 등에 사용하는 여러가지 패키지가 기본적으로 포함되어있는 파이썬 배포판입니다. 때문에 해당 분야를 파이썬으로 접근하고자 할 때 tibetsandfox.tistory.com 기본 명령어 conda --version - 설치된 아나콘다의 버전을 출력합니다. conda info - 설치된 아나콘다에 대한 여러가지 정보를 출력합니다. 버전, 파이썬 버전, 활성화 된 가상 환경 등의 정보가..

파이썬 2021.07.23

파이썬(python) - 아나콘다(Anaconda)란?

아나콘다(Anaconda)란? 아나콘다는 머신러닝이나 데이터 분석 등에 사용하는 여러가지 패키지가 기본적으로 포함되어있는 파이썬 배포판입니다. 때문에 해당 분야를 파이썬으로 접근하고자 할 때 세팅이 매우 간단해집니다. 또한 아나콘다는 파이썬 가상 환경을 구축하는데도 유용하게 사용할 수 있습니다. 내부적으로 conda라는 환경/패키지 관리자가 존재하며 이 conda를 통해 패키지를 설치하거나 가상 환경을 관리할 수 있습니다. 아나콘다를 써야 하는 이유? 공식 홈페이지에서 설치한 파이썬은 패키지 관리자인 pip를 제외한 어떤 패키지도 추가로 설치되지 않습니다. 따라서 필요한 패키지를 하나하나 손수 설치해야 하며 가상 환경도 virtualenv등을 따로 사용해서 구축해야 하죠. 물론 본인이 아나콘다에 포함된 ..

파이썬 2021.07.20

Optimistic UI란?

개요 SWR을 공부하던 중 Optimistic UI라는 용어를 보게 되어 간략히 정리해보겠습니다. ​ Optimistic UI란? Optimistic UI(낙관적인 UI?)는 특정 요청이 성공 할 것이라 가정을 하고 먼저 그 요청의 결과를 보여주는 방식의 UI입니다. 어떤 요청이 아주 높은 확률(100%는 아니더라도)로 성공한다는 보장이 있을 때, 그리고 그 요청이 너무 늦지 않은 시간 안에 응답이 온다는 보장이 있을 때 사용할 수 있는 UI라고 생각하시면 됩니다. 한 줄로 요약하면 '안 봐도 비디오' 정도가 되겠네요 Optimistic UI를 사용하는 이유 요청의 응답이 도착하기도 전에 미리 그 결과를 예측해서 보여주기 때문에 유저 입장에서는 마치 즉각적으로 응답이 오는 것처럼 느껴지게 됩니다. 이는 ..

카테고리 없음 2021.07.16

파이썬(Python) - 가상 환경(Virtual Environments)

가상 환경(Virtual Environments)이란? 가상 환경은 독립적인 파이썬 실행 환경을 의미합니다. 각각의 가상 환경은 다른 환경에 영향을 미치지 않으며 각자 다른 종류와 버전의 패키지를 가질 수 있습니다. 이렇게만 얘기하면 이해하기 힘드니 가상 환경이 왜 필요한지부터 어떤 문제를 해결해주는지 알아봅시다. 가상 환경이 왜 필요한가? 우리는 파이썬을 설치할때 기본적으로 같이 딸려오는 패키지 매니저인 pip를 이용해서 필요한 패키지를 설치할 수 있습니다. 이렇게 pip로 설치한 패키지는 전역으로 설치되기 때문에 그 어떤 파이썬 스크립트라도 제약 없이 사용할 수 있습니다. 예를 들어 pip로 Numpy 모듈을 설치했다면 모든 파이썬 스크립트에서 Numpy 모듈을 사용할 수 있게 됩니다. 만약 프로젝트..

파이썬 2021.07.03
반응형