예외처리와 쓰레드
프로그램에 있어서 예외처리를 잘 해주는 것은 매우 중요하다
기본적인 구조
try :
except [발생오류 [as 오류 메세지 변수]]:
예제
try :
print('문제 없는 구간 ')
a=1/0
except Exception as ex:
print(ex)
=> 문제없는 구간
division by zero
만약 0으로 나눈 것만 예외처리하려면 구체적인 에러를 적어주면 된다.
except ZeroDivisionError:
print('0으로 나누었습니다')
finally :
finally는 예외상황없어도 무조건적으로 실행되는 구간이다
인덱싱 에러처리
try:
print('문제없는 구간')
a = [0,1,2]
print(a[4])
except IndexError:
print('인덱싱 에러입니다.')
except Exception as ex:
print(ex)
finally:
print("여기는 무조건 들어옵니다.")
이렇게 중복으로 처리도 가능하다
except (IndexError, ZeroDivisionError):
print('인덱싱 또 0으로 나눈 에러입니다.')
쓰레드
쓰레드는 컴퓨터가 처리하는 단위이다
하나의 쓰레드로 한 줄 한 줄 컴터가 실행하여 처리한다.
하지만 멀티 쓰레드의 경우 2 개 이상의 프로그래밍을 시간 할당을 통해 동시에 처리하는 것처럼 하는 기능이다
즉 2개의 프로그래밍이 있다면 서로 번갈아 가면서 실행하는 게 멀티 쓰레드이다
def sum(name, value):
for i in range(0, value):
print("thread ", name ," : ", i)
t1 = threading.Thread(target=sum, args=('1번', 20))
args=는 넘겨줄 값
target는 사용할 함수
t2 = threading.Thread(target=sum, args=('2번', 20))
t1.start()
t2.start()
print("Main Thread")
이렇게 번갈아가면서 실행이 된다.
import time
def sum(name, value):
for i in range(0, value):
print("thread ", name ," : ", i)
time.sleep(0.1)
그러나 만약 위의 코드가 너무 복잡하고 길다면 리소스를 너무 잡아먹어 다른 걸 실행할 수 없게 된다.
따라서 이럴 때는 time.sleep(0.1)로 쉬도록 하여 그새에 다른 걸 실행할 수 있게 해준다.
만약 이러면 조금 더 순서대로 돌아갈 수 있게 된다.