티스토리 뷰
객체지향 언어에서는 가지고 있는 기능 중에 하나인 예외처리와 쓰레드에 대해 살펴보겠습니다.
모든 강의 자료 : www.codingnow.co.kr/
예외처리 (try except)
객체지향 언어의 장점이지만 단점은 기존 메소드를 손쉽게 가져와 사용할 수 있지만 잘못된 동작에 의해 예상하지 못한 에러가 발생하여 프로그램이 중단되는 경우가 있습니다.
중요한 프로젝트인 경우 예외 상황에 의해 프로그램이 중단되면 큰 문제가 발생할 수 있습니다.
이것을 대처할 수 있도록 try - except 를 지원하고 있습니다.
기본 구조는 다음과 같습니다.
try:
...
except [발생 오류[as 오류 메시지 변수]]:
...
사용 예제를 살펴 보겠습니다.
try:
print('문제없는 구간')
a = 1/0
except Exception as ex:
print(ex)
출력 결과입니다.
'문제없는 구간'을 print하고 1을 0으로 나누는 예외상황이 발생하여 except가 발생한 예제입니다.
'Exception' 모든 예외상황을 처리합니다.
만약 0으로 나눈 것만 처리하려면 다음과 같이 합니다.
try:
print('문제없는 구간')
a = 1/0
except ZeroDivisionError:
print('0으로 나누었습니다.')
except Exception as ex:
print(ex)
출력 결과입니다.
ZeroDivisionError 를 통해 에러를 처리합니다.
여기에는 finally이 있는데 이것은 예외상황이 없어도 무조건 실행하는 구간이됩니다.
try:
print('문제없는 구간')
#a = 1/0
except ZeroDivisionError:
print('0으로 나누었습니다.')
except Exception as ex:
print(ex)
finally:
print("여기는 무조건 들어옵니다.")
출력결과를 보면 0으로 나눈 것을 주석처리하여 동작하지 않지만 무조건 finally를 실행해 주는 것을 볼 수 있습니다.
추가적으로 인덱싱 에러처리입니다. 즉 발행할 error를 알고 있다면 이와 같이 예외 처리 할 수 있습니다.
try:
print('문제없는 구간')
a = [0,1,2]
print(a[4])
except IndexError:
print('인덱싱 에러입니다.')
except Exception as ex:
print(ex)
finally:
print("여기는 무조건 들어옵니다.")
또는 다음과 같이 중복으로 처리도 가능합니다.
try:
print('문제없는 구간')
a = [0,1,2]
print(a[4])
except (IndexError, ZeroDivisionError):
print('인덱싱 또 0으로 나눈 에러입니다.')
except Exception as ex:
print(ex)
finally:
print("여기는 무조건 들어옵니다.")
쓰레드(Thread)
이번에는 쓰레드에 대해 살펴 보겠습니다.
쓰레드는 컴퓨터가 처리하는 단위라고 할 수 있습니다.
일반적으로 하나의 쓰레드로 한줄 한줄 컴퓨터가 실행하여 처리하지만 멀티 쓰레드는 2개 이상의 프로그래밍을 시간 할 당을 통해 마치 동시에 처리하는 것처럼 하는 기능입니다.
다음 그림과 같이 1개의 쓰레드로 실행하게 되면 1번을 다 처리하고 2번을 처리하겠지만
2개의 쓰레드를 사용하면 1번과 2번이 번갈아가며 실되게 됩니다.
즉 동시에 처리 되어야 하는 경우에 사용되게 됩니다.
예제소스를 살펴 보겠습니다.
def sum(name, value):
for i in range(0, value):
print("thread ", name ," : ", i)
t1 = threading.Thread(target=sum, args=('1번', 20))
t2 = threading.Thread(target=sum, args=('2번', 20))
t1.start()
t2.start()
print("Main Thread")
쓰레드 t1, t2를 코드적으로 한줄 차이로 실행하였지만
t1.start()
t2.start()
쓰레드는 시간을 조율하여 아래와 같이 번갈아 가며 실행하고 있습니다.
#파이썬 #예외처리 #쓰레드 #try #thread
'파이썬 강의' 카테고리의 다른 글
파이썬 기초 활용 편 #간단한 게임 만들기 #가위바위보 게임 (0) | 2021.01.13 |
---|---|
파이썬 기초 활용편 : : 학생의 총점, 최고, 최저, 평균 구하기 (0) | 2021.01.12 |
파이썬 기초 활용편 별 피라미드 출력하기 강의 :: 과정을 차근차근 설명합니다. (0) | 2021.01.12 |
파이썬 크롤링 :: 네어버 웹툰의 순위 가져오기 :: BeautifulSoup, selenium, csv (0) | 2020.11.18 |
python :: 멜로차트 실시간 가져오기 크롤링 :: selenium, csv, BeautifulSoup (0) | 2020.11.17 |