작성
·
1K
답변 1
0
오 은정님 안녕하세요.
답변드릴께요
예를 들어 시스템에 2개의 물리적 CPU가 있고 각 CPU에 하이퍼스레딩(현대 CPU에서 일반적임)이 있는 경우 2개의 물리적 CPU와 4개의 논리적 CPU가 있습니다. 파이썬은 4개의 CPU를 출력할거예요. 그러면 시스템의 기본 작업자 스레드 수는 (4 + 4) 또는 8이 됩니다.
이 숫자가 32개 이상(예: 물리적 코어 16개, 논리 코어 32개, 더하기 4개)이면 기본값은 상한을 32개 스레드로 자르게되요.
시스템에서 CPU(물리적 또는 논리적)보다 더 많은 스레드를 갖는 것이 일반이예요.
그 이유는 스레드가 CPU 바운드 작업이 아닌 IO 바운드 작업에 사용되기 때문인데요. 즉, 하드 드라이브, DVD 드라이브, 프린터, 네트워크 연결 등과 같이 상대적으로 느린 리소스가 응답하기를 기다리는 작업에 스레드가 사용되요.
따라서 특정 요구 사항에 따라 응용 프로그램에 수십, 수백, 심지어 수천 개의 스레드가 있는 것은 드문 일이 아닙니다. 하나 또는 수천 개 이상의 스레드가 있는 것은 드문 일입니다. 이렇게 많은 스레드가 필요한 경우 AsyncIO와 같은 대체 솔루션이 선호될 수 있다는 뜻이예요.