무거운 계산을 스레드로 나누면 빨라질 줄 알았는데 전혀 아니라서 당황스럽습니다.


import threading, time

def countdown(n):
while n > 0:
n -= 1

N = 50_000_000

start = time.time()
countdown(N)
countdown(N)
print('순차:', time.time() - start)


이걸 스레드 두 개로 동시에 돌리면 절반 시간에 끝날 거라 기대했어요.


start = time.time()
t1 = threading.Thread(target=countdown, args=(N,))
t2 = threading.Thread(target=countdown, args=(N,))
t1.start(); t2.start()
t1.join(); t2.join()
print('스레드:', time.time() - start)


근데 측정해보니 스레드 버전이 순차랑 거의 똑같거나 오히려 살짝 더 느려요. 코어는 여러 개인데 왜 병렬로 안 돌아가는 거죠? 스레드를 늘려도 CPU 계산은 왜 빨라지질 않는지 궁금합니다.