본문 바로가기

두두의 IT/Computer Science

Python 지식

728x90

6. 파이썬 generator에 대해 설명해주세요

  • Iterator를 생성해주는 함수
    • Iterator : next() 메소드를 이용해 데이터를 순차적으로 접근할 수 있는 함수
  • 함수 한에 yield 키워드를 사용함
  • 한번에 모든 데이터를 메모리에 적재할 필요가 없어서 메모리 효율이 높고, 계산 결과가 필요할 때까지 계산을 늦츨 수 있으므로, 수행 시간이 긴 연산을 필요한 순간까지 늦출 수 있다는 장점을 가지고 있음

 

7. 파이썬의 GIL에 대해 설명해주세요

  • GIL : 한번에 하나의 스레드만 수행할 수 있도록 인터프리터에 lock을 거는 기능
  • 파이썬 객체는 Garbage Collection 기능을 위해, reference count를 가지고 있는데, 해당 객체를 참조할 때마다 reference count 값을 변경해야 함
  • 멀티 스레드를 실행하게 되면, 각 스레드가 공유하는 객체들에 대해 각각 lock을 거는 경우, 성능상 이슈와 deadlock과 같은 위험이 존재하여, 인터프리터 레벨엣 한 시점에 실행하는 스레드는 1개로 제한 한 것임. 
  • 그래서 멀티 CPU 환경이라 할지라도, 파이썬 스레드는 어느 시점에나 1개의 스레드가 실행되는 단점이 있음
  • 이를 해결하려면 multiprocessing 라이브러리를 사용하면 됨. 이 경우 개별 프로세스가 생성되고, 프로세스 별로 인터프리터 락이 걸리기 때문에, 동시 실행이 가능함

'두두의 IT > Computer Science' 카테고리의 다른 글

[OS] 주요 지식  (0) 2022.08.30
웹(Frontend, Javascript) 기본 지식  (0) 2022.08.30
Java 지식  (0) 2022.07.19
CS 기본 지식  (0) 2022.07.19
[DB] RDBMS 질의어  (0) 2022.07.02