3
import threading 
print threading.activeCount() 

출력 :이 코드는 파일 및 실행에 저장됩니다 2파이썬 스레드가 처음에 2로 계산되는 이유는 무엇입니까?

.

메인 스레드 일 때 어떻게 2가 될 수 있습니까?

우리는 foo.py 파일을 실행할 때 파이썬이 기본 스레드 이외에 다른 스레드를 기본적으로 실행합니까?

+1

무엇을 테스트 중입니까? 백그라운드 작업을 위해 스레드를 사용하는'ipython' 또는'IDLE'에서 테스트하고있는 것 같습니다. 평범한 파이썬 인터프리터는'PYTHONSTARTUP' 파일 등에서 그렇게하지 않는 한 추가 스레드를 시작하지 않습니다. – ShadowRanger

+0

나는'1'을 얻습니다 (파이썬 3.5.2 사용). – Olian04

답변

5

심령 디버깅 : 평범한 파이썬 인터프리터에서는 실행되지 않습니다. 평범한 파이썬 인터프리터는 여분의 스레드를 시작하지 않지만 (이상한 PYTHONSTARTUP 파일을 가지고 있지 않다면), 다른 인터프리터는 그렇습니다. 예를 들어 :

  • ipython은 (프롬프트 지연 피하기 위해)
  • IDLE이 소켓을 통해 통신하는 여러 프로세스를 사용하여 설계하고, 대화 형 인터프리터는 당신이 제공하는 백그라운드에서 명령 기록을 저장하기 위해 별도의 스레드를 실행 데몬 스레드를 사용하여 백그라운드 소켓 통신 수행

실행 시도 print threading.enumerate(); 예를 들어, ipythonHistorySavingThread이라는 서브 클래스 인 HistorySavingThread을 사용하고 있습니다. IDLE은 보통 Thread이지만, 실행되는 함수의 이름은 SockThread이며, 무엇을하는지에 대한 단서를 제공합니다.

관련 문제