파이썬

예외처리와 쓰레드

ho-bolt 2021. 11. 29. 00:28

프로그램에 있어서 예외처리를 잘 해주는 것은 매우 중요하다 

 

기본적인 구조 

 

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)로 쉬도록 하여 그새에 다른 걸 실행할 수 있게 해준다.

만약 이러면 조금 더 순서대로 돌아갈 수 있게 된다.

728x90