더북(TheBook)


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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.