2.2멀티스레딩 구현
예제를 통해 멀티스레딩을 직접 구현해 보겠습니다. 매우 간단하지만 멀티스레딩을 어떻게 구현하는지 경험해 보는 것이 목적입니다.
0부터 1000까지의 정수가 담긴 리스트에서 모든 요소의 값을 두 배로 만들려고 합니다. for 문을 사용하여 인덱스 0부터 1000까지 리스트의 모든 요소를 순회하면서 2를 곱했습니다. 이 프로그램은 실행 흐름이 하나인 단일 스레드입니다.
>>> li = [i for i in range(1001)]
>>> for idx in range(1001):
li[idx] * = 2
똑같은 작업을 실행 흐름 네 개로 나누어 처리해 봅시다.
코드 10-1 process_thread/multithread_exam.py
import threading #1 # 스레드에서 실행할 함수 def thread_main(li, i): #2 # range( ) 안의 값이 # 스레드가 담당할 리스트의 인덱스 범위를 결정 for i in range(offset * i, offset *(i + 1)): #3 # 요소에 2를 곱한다 li[i] *= 2