본문 바로가기
언어/Python

[Python 기본 공부정리] 13-4. 라이브러리(library)

by 민-Zero 2020. 1. 15.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다.

틀린 부분에 대한 지적은 감사합니다.

9. random

난수를 발생시키는 라이브러리이다.

① random.random() : 0.0~1.0 사이의 실수 중 하나를 난수로 반환해주는 함수이다.

② random.randint(시작 정수값, 마지막 정수 값) : 시작~마지막 사이의 랜덤 값을 반환

이런 식으로 직접 계산을 통해 원하는 값을 설정할 수도 있지만 파이썬에서는 좀 더 쉬운 방법을 제공한다.

randint를 사용하면 시작과 끝으로 설정한 정수 사이의 값이 난수로 반환된다.

 

③ random.choice()

choice함수는 리스트에 관련된 함수로 리스트에 있는 요소를 무작위로 선택하여 반환해준다.

④ random.shuffle()

shuffle함수는 리스트의 요소의 순서를 무작위로 섞어준다.

10. webbrowser

webbrowser는 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행해주는 라이브러리이다.

①webborwser.open(url)

자동으로 url에 입력한 웹페이지가 열리게 된다.

 

11. threading

threading 라이브러리는 파이썬에서 스레드를 구현하기위해 사용되는 라이브러리이다. 스레드에 대해 간단히 정리하자

 

스레드란?

프로그램(프로세스)내에서 실행되는 흐름의 단위이다. 하나의 프로세스는 여러 개의 스레드로 구성이 가능하다. 하나의 프로세스를 여러 스레드로 구성하면 스레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다. 각 스레드 별로 자신만의 스택(stack)과 레지스터(register)를 가진다. 이유는 스택에는 함수 호출시 인자값 이나 주소값, 함수 내의 변수 등이 저장되는 공간이므로 스레드 별로 자신만의 스택을 가지면 독립적인 함수 호출이 가능해져서 독립적인 실행 흐름을 추가할 수 있게 되기 때문이다. 레지스터의 경우는 PC 값은 스레드가 명령어를 어디까지 수행했는지 나타내는데 스레드는 cpu를 할당받았다가 스케쥴러에 의해 다시 선점당하게된다. 따라서 명령어가 연속적으로 수행되지 못하기 때문에 어디까지 수행했는지 기억할 필요가 있어 PC 레지스터를 독립적으로 할당한다. 

한순간에 하나의 스레드만 실행이 가능하며, 하나의 프로세스를 다수의 실행 단위(스레드)로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것을 멀티스레딩이라고 부른다.

이런 식으로 하나의 프로세스에 다수의 스레드가 들어가 메모리나 자원등을 공유하여 수행능력을 향상한다.

 

즉, 정리하면 프로세스는 실행 중인 프로그램으로써 운영체제로 부터 cpu, 메모리 등의 자원을 할당받아 작업을 수행하는 단위이며 스레드는 프로세스가 할당받은 자원을 이용해 실행하는 흐름의 단위이다. 

또한 프로세스의 생성은 많은 시간과 자원을 소비한다. 따라서 프로세스보다 생성 및 종료가 빠르고 서로 간에 전환 시간이 짧은 스레드를 이용하여 수행능력을 높인다.

 

① threading.Thread(target=함수)

파이썬 프로그램은 기본적으로 하나의 스레드에서 실행된다. 즉, 하나의 스레드가 파이썬 코드를 순차적으로 실행한다. 

파이썬에서 스레드를 실행하기 위해서 threading.Thread() 함수를 호출하여 Thread 객체를 얻은 후 Thread 객체의 start() 메서드를 호출하면 된다.

 

예시를 통해 확인해 보자

thread_test라는 함수는 sleep함수를 통해 함수를 수행하는데 5초의 시간이 소요된다. 따라서 해당 함수를 5번 호출하게 되면 총 25초의 시간이 소요된다.

 

하지만 이를 스레드를 통해 사용하게 되면 therad_test함수를 동시에 실행할 수 있어 동작 시간이 줄어들게 된다. 

 

 

댓글