ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 블로그 읽을거리 요약 정리 (1)
    이것저것 2023. 7. 26. 11:44

    0726

    블로그 글 읽어보기..

    Stop Using Python Strings To Represent File Paths!

    Stop Using Python Strings To Represent File Paths!

    파일경로를 나타내기 위해 문자열 사용을 그만하라.

    Mac, Linux filepath는 슬래시(/)

    Windows Uses backward slashed(\)

    File Path를 구분하기 위해 If else를 사용하지 않을려면

    pathlib를 사용하자.

    import pathlib
    
    path = pathlib.Path('folder') / 'subfolder' / 'subsubfolder'
    print(path)
    # folder/subfolder/subsubfolder
    

    주의점은 Pathlib를 사용할 경우 나누기 연산으로 들어가지 않게 잘 구분하자.

    Guide to Python Project Structure and Packaging

    (프로잭트 구조 및 패키징 가이드)

    Guide to Python Project Structure and Packaging

    TIPS:

    1. Decide on project layout: src or flat (프로잭트 레이아웃 구성 src, flat)
    2. Create a virtual environment. (가상 환경 만들기)
    3. Package your project source code folder. (프로잭트 소스 코드 설정)
    4. Install your newly packageed project (editable install) (새로 패키징된 프로젝트를 설치).

    TL;DR

    • 과거에는 setup.py가 일반적으로 패키지 빌드 프로세스로 구성하였는데 앞으로는 setuptools, setup.cfg pyproject.toml 이 사용됨

    INTROUCTION

    파이썬에 Script단계(Juptyer)를 넘어가면서 프로젝트가 거대화 해지면서 파이썬에 소스코드를 어디다 넣어야하는지 의문이 든다, 장기적 관점에서 이는 패키징을 통해 다른 사용자에게 프로젝트를 배포하는데에도 매우 중요함,

    python 공식 더큐먼트에서 두개에 비교 설명함(https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/)

    기타 등등 하면서 두 구조의 불합리한 구조, 장점을 쭉 설명함

    생략…

    CONCLUSION

    • Python project를 구조화하는 것은 적절한 내부 작업과 패키지형태로 다른 사용자에게 배포하는것은 매우 중요함
    • There are two populatr structures: src Layout, flat layout(대표적으로 두 가지 구조가 있음)
    • In the past, setupy was commonly used to configure the package building process(이 전 까지는 setupy로 구조를 구성하는것이 일반적 이였음.) but the way forwadrd when using non-standard libraries loke setptools is via set.cfg an project.toml (그러나 앞으로 나아갈 방향은 setuptools를 활용한 setup.cfg, pyproject.toml이다.

    Python Performance Hacks: 7Ways to Speed Your code by 92%

    Python Performance Hacks: 7 Ways to Speed Up Your Code by 92%

    Python is popular high-level programming language used for a variety of applications, ranging from web development to scientific computing(파이썬은 높은 수준에 프로그래밍 언어로써

    웹 개발부터 과학 컴퓨팅에 이르기까지 다양함)

    However, the interpreted nature of Python can make it slower than compiled languages like C or Java. 그러나 인터프리터로써 컴파일링 언어인 C나 Java보다 느릴 수 있다.

    This means that optimization is crucial for Python developers to improve the performance of their appliactions(즉 개발 과정에서 파이썬 최적화가 가장 중요하다)

    1. Use built-in functions(내장 함수 사용)

    파이썬은 많은 상당히 많은 수에 성능에 최적화 된 내장 함수가 있다.

    내장 함수 에 len, sum , range 같은 것을 사용하는 것이 비슷한 것을 작성하는 것 보다 더 빠르다.

    내장함수는 C로 구현되어 동등한 파이썬 코드보다 빠름 ,.

    2. Avoid unnecessary computations (불필요 연산 제거)

    파이썬에 가장 큰 병목 현상중 하나는 불필요 계산이다.

    여러번 계산이 반복되는 경우 케싱을 고려하는것이 좋다.

    부울 식에서 불필요한 계산을 피하기 위해 (short-circuit evaluation)을 사용하는것이 좋다.

    short-circuit evaluation 시간초가 적게 걸리는 method를 사용하여 bool 먼저 코드를 사용하여 반환을 먼저 받게 함.

    3. Use list comprehensions and generator expressions (목록 내포 및 생성기 표현식 사용)

    리스트 컴프리핸션 그리고 재네레이터 표현식은 강력하고 효율적으로 리스트와 제네레이터를 만들 수 있당 특히 대규모에서 사용 할 경우 for 을 사용하는 것보다 더 빠르다.

    4. Use the right data structures(맞는 자료 구조 사용)

    올바른 자료 구조를 사용할 경우 성능을 크게 증가 시킬 수 있음

    5. Avoid excessive function Calls(과도한 함수 호출을 피하기)

    함수를 직접 호출하는것은 상대적으로 비싼 데이터를 치룬다, 특히 함수를 동적으로 조히해야할 경우, 코드를 최적할 경우 함수 호출을 최소화 하고 루프에서 함수를 사용할 경우 결과를 캐싱을 한다.

    6. use Cython or numba for computationally intensive code(계산 집약적 코드에는 Cython((numba))사용 )

    계산 집약적 코드에는 넘바나 Cython을 사용하여 계산을 빠르게하는것을 고려해 봐야함

    7. Use profiling to identify performance bottlenecks (프로파일링을 사용하여 성능 병목 현상 식별)

    코드를 효과적으로 최적화 할려면 성능 병목현상을 해결해야 합니다.

    프로파일링은 코드의 성능을 측정하고 가장 많은 시간이 소요되는 부분을 식별하는 기술임.

    댓글

Designed by Tistory.