블로킹
CPU 바운드
프로그램이 실행될 때 실행 속도가 CPU 속도에 의해 제한됨을 의미
CPU가 너무 많은 연산을 해서 CPU가 프로그램 실행을 막는 것
정말 복잡한 수학 수학을 계산하는 경우에 컴퓨터의 실행 속도가 느려짐
cpu_bound.py
def cpu_bound_func(number: int):
total = 1
arrange = range(1, number + 1)
for i in arrange:
for j in arrange:
for k in arrange:
total *= i * j * k
return total
if __name__ == "__main__":
result = cpu_bound_func(50)
print(result)
IO 바운드
IO에 의해서 프로그램 실행을 막는 것
여기서 I : Input, O: Output을 의미한다
프로그램이 실행될 때 실행 속도가 I/O에 의해 제한됨을 의미한다
사용자가 입력을 하고 해당하는 입력에 대해 더하기 100을 한 결과값을 출력해주는 프로그램을 개발한다고 가정
사용자가 입력을 늦게 하면 할수록 바운드가 오래 지속됨
사용자가 입력을 100초 후에 숫자 15를 입력하면 115가 약 100초 후에 출력
사용자가 입력을 하는 시간에 따라서 프로그램의 실행 속도가 결정됨
사용자가 입력을 15초 후에 숫자 3을 입력한다면 103이 15초 후에 출력
io_bound.py
def io_bound_func():
print("값을 입력해주세요.")
input_value = input()
return int(input_value) + 100
if __name__ == "__main__":
result = io_bound_func()
print(result)
사용자가 키보드로 숫자를 입력하는 경우 뿐만 아니라, 컴퓨터와 컴퓨터끼리 통신을 할 때에도 I/O 바운드가 발생
어떤 프로그램에서 특정 웹에 요청을 하여 응답을 기다리는 코드가 있다고 요청을 하는 것이 I가 되고 응답을 하는 것이 O가 되는 I/O 바운드인 것 ⇒ 요청과 응답하는데 걸리는 시간
import requests
# 요청 -> I
def io_bound_func():
result = requests.get("<https://google.com>")
return result
if __name__ == "__main__":
result = io_bound_func()
print(result) # 응답 -> O