본문 바로가기

Programming/Python8

Python OS Library 오늘 어떠한 툴을 만들면서 익숙하게 사용하지 않았던 Python으로 파일 시스템이나 OS를 다루는 모듈이 있어 정리해보고자 합니다.glob특정 확장자나, 파일 명 패턴이 담긴 파일들의 이름을 리스트화하는 라이브러리 입니다.만약, 다음과 같은 파일이 있는 경우에 해당 이미지들의 패턴을 제시합니다. 공식문서↗import globx = glob.glob('./data/stop*.jpg')print(x)# ['./data/stop7.jpg', './data/stop1.jpg', './data/stop4.jpg', './data/stop9.jpg', './data/stop8.jpg', './data/stop.jpg', './data/stop2.jpg', './data/stop10.jpg', './data/stop.. 2024. 6. 4.
파이썬 가상환경 설치하기 21년도 쯤,, 학부 시절만 해도 Anaconda를 자유롭게 사용할 수 있었습니다.그런데 회사에 입사하고 나서 라이센스 때문에 Anaconda를 사용하려면 일종의 요금을 내고 사용해야 한다고 합니다.저도 자세하게는 몰랐지만 해당 블로그에 의하면 200명의 직원 이상의 회사라면 무료로 사용하면 안된다고 합니다.(이 이상의 경우 Enterprise 버전을 사용해야 합니다.) 오늘은 파이썬 가상환경을 설치하는 방법에 대해 알아보려고 합니다.그리고,  Anaconda의 Commercial 약관에 영향 받지 않는 MiniConda + CondaForge로 설치하는 방법을 알아보고자 합니다. 먼저 Ubuntu에서 파이썬을 설치하는 방법입니다.sudo apt updatesudo apt install python3su.. 2024. 5. 11.
깊은 복사와 얕은 복사 오늘 면접을 보면서 제대로 기억하지 못한 파이썬의 깊은 복사와 얕은 복사에 대해 포스팅하려고 합니다. 얕은 복사(Shallow Copy) : 참조를 입력하는 복사, 변수명은 다르지만 서로 같은 대상이다. immutable한 객체는 변경이 불가능하기 때문에 변수를 바꿔야 객체가 달라진다. 깊은 복사(Deep Copy) : 서로 값만 같을 뿐, 본질적으로는 서로 다르기 때문에 수정시, 다른 변수가 수정되지 않는다. 🌱 mutable, immutable 객체, 변하다..변하지 않다. 먼저, 깊은 복사와 얕은 복사에 대해 알기 전에 파이썬의 두가지 객체인 Mutable한 객체와 Immutable한 객체에 대해 알필요가 있습니다. Mutable : 객체의 상태를 변경할 수 있는 객체입니다. list, set, d.. 2024. 4. 8.
Garbage Collector 동작 방식 개발자에게 메모리 관리는 성능을 개선하는 측면에서 중요하게 자리잡혀야할 개념이다. 비효율적인 메모리 관리는 프로그램이나 서버의 속도를 느리지게 할 수도 있다. 다음 코드를 보면 함수 내부에 객체를 생성했지만 리턴하지 않았다. 이 리스트에서 해당 원소를 제거하면 객체는 참조점을 잃게 된다. 물론 가비지 컬렉터(GC)가 회수하겠지만 언제 실행될지 모르며 해결되지 못하는 경우 메모리 누수(memory leak)라는 문제가 발생한다. 메모리 누수는 객체를 더이상 사용하지 않아도 발생한다. 여기서는 사용자의 부주의에 의한 메모리 누수만 언급한다. def func(arr): a = Foo() arr.append(a) 우리는 이러한 비효율적인 메모리를 관리하기 위해 효율적인 코드를 작성해야 한다. 파이썬에서는 Pyt.. 2024. 2. 7.
파이썬에서 멀티 스레딩을 구현하지 못하는 이유 운영체제를 공부하면서 느꼈던 토픽에 대해 공유해보려고 한다. 멀티 스레딩은 복수의 스레드가 자원을 공유해 프로세스를 실행시키기 때문에 좀 더 빠른 속도로 프로세스를 실행할 수 있다고 한다. 그런데 파이썬에는 멀티 스레드를 사용한다 하더라도 싱글 스레드와 별반 차이가 없다고 한다. 이유는 GIL 정책 때문이라고 하는데... 🧐 이유에 대해 궁금해지기 시작했다. Multi Thread? 우선, 스레드(Thread)는 프로세스에 실행되는 하나의 작업 단위를 말한다. 스레드의 메모리 구조를 보면 프로세스와 다르게 대부분의 영역이 공유 영역으로 되어 있다. 즉, 멀티 스레드를 사용하면 스레드 끼리 해당 영역을 공유하고 있기 때문에 메모리를 효율적으로 사용할 수 있게된다. 추가로 멀티 프로세싱(Processing).. 2024. 1. 31.
파이썬 패키지와 모듈 Modulemodule(모듈)은 Python 코드를 포함하는 하나의 파일을 말합니다.이 모듈을 다른 프로그램에서 불러와 사용할 수 있습니다. 파이썬에서 이식성이 좋은 이유는 모듈이 `.py`라는 확장자로 이루어져 있기 때문입니다. 자주 사용하는 모듈로는 `os, sys, math, datetime, random, JSON`등이 있습니다. 파이썬은 어떻게 모듈을 가져올까?파이썬의 모듈은 `.py`으로 이루어진 하나의 파일이라고 했습니다. 그럼 우리가 프로그램을 만들 때 어떻게 파이썬 파일을 가져오게 되는 것일까요? 파이썬에서 모듈을 `import` 할 때 PYTHONPATH를 조회하게 됩니다. PYTHONPATH은 다음 코드로 확인할 수 있습니다.import syssys.path 모듈이 담겨진 경로를 리스.. 2024. 1. 2.
이터레이터? 제너레이터? 이터레이터(Iterator)와 제너레이터(Generator)는 알고도 가끔 헷갈릴 때가 있습니다. 먼저, 결론부터 말하자면 다음과 같습니다. iterable 객체 : `iter` 함수에 인자로 전달이 가능한 반복 가능한 객체 ex. List, Dict, Set, String, range() iterator(이터레이터) : 그 반복 가능한 객체를 `iter` 함수에 인자로 전달해 순회할 수 있는 객체 generator(제너레이터) : Iterator 객체를 만들 수 있는 함수 (메모리 절약!) 어떤 의미인지는 간략하게 알았으니 코드를 보면서 자세히 확인해봅시다. 🌱 iterable & Iterator 앞서 나왔듯, iterable한 객체는 iter가 가능(able)한 객체를 말합니다. 대표적인 iterab.. 2023. 11. 28.
파이썬 함수 Deep-Dive 함수 함수를 사용하는 것은 코드를 재사용하는 측면 혹은 가독성 측면에서 이득을 준다. 실제로, 파이썬에서 함수로 정의한 코드와 그렇지 않은 코드를 비교했을 때 함수로 정의한 코드가 훨씬 속도가 빠르다고 한다. 파이썬에서 함수는 다음과 같은 특징을 갖는다. 일급객체(First Class Citizen) : 함수를 변수나 데이터 구조에 직접 담을 수 있고 매개변수로 전달이 가능하며 리턴 값으로 사용할 수 있다는 특징이 있다. 함수를 작성할 땐 camel_case로 작성한다. 함수 외부에 선언된 변수는 전역 변수(Global Variable)이라 하며 내부에 선언된 변수를 로컬 변수(Local Variable)라고 한다. 만약, 전역변수를 내부에 접근하고자 하는 경우 `global` 키워드를 사용해 액세스 할.. 2023. 11. 22.