코드 10-2를 보면 리스트 요소 개수인 num_elem이 1000이므로 offset은 250이 됩니다. threads 리스트에는 생성된 스레드를 저장합니다(#4). for 문으로 스레드를 네 개 생성한 다음(#5) Thread 객체 th를 생성합니다(#6). target은 스레드에서 실행할 함수고 args는 함수에 전달할 인자입니다.
start() 메서드는 스레드를 시작하는 메서드(#7), join() 메서드는 스레드 실행이 종료될 때까지 기다리는 메서드입니다(#8). 실행해 보면 리스트의 모든 요소가 두 배가 된 것을 확인할 수 있습니다.
잠깐만요
타임 슬라이스
스레드는 일정한 시간 간격으로 CPU를 할당받아 연산하는데, 이때 일정한 시간 간격을 타임 슬라이스라고 합니다. 1.2절 스케줄링에서 라운드 로빈(Round Robin)을 공부한 적이 있습니다. 파이썬의 sys 모듈을 사용하면 타임 슬라이스를 알 수 있습니다. 한 번 확인해 볼까요?
>>> import sys
>>> sys.getswitchinterval()
0.005
sys 모듈의 getswitchinterval( ) 메서드는 파이썬의 멀티스레딩에서 각 스레드의 실행 시간인 타임 슬라이스를 보여 줍니다.