TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 기초>

[파이썬] 파이썬 기초: 라이브러리-2

by 기록자_Recordian 2024. 10. 16.
728x90
반응형
이전 내용
 

[파이썬] 파이썬 기초: 라이브러리-1

라이브러리(library) 파이썬 라이브러리: 전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아 놓은 것.어떤 일을 할 때 어떤 라이브러리를 사용해야 하는 지를 알기 위해서는 어떤 라이브

puppy-foot-it.tistory.com


calendar

 

calendar 는 파이썬에서 달력을 볼수 있게 해주는 모듈이다

 

1) 특정 연도의 전체 달력 보기 : calendar.calendar(연도) / calendar.prcal(연도)

import calendar
print(calendar.calendar(2024))
# 또는
print(calander.prcal(2024))

 

 

2) 특정 연도의 특정 월 달력 보기: calendar.prmonth(연도, 월)

calendar.prmonth(2024, 10)

 

3) calendar.weekday

weekday(연도, 월, 일) 함수는 그 날짜에 해당하는 요일 정보를 돌려준다

월: 0, 화: 1, 수:2, 목:3, 금: 4, 토: 5, 일:6

calendar.weekday(2024, 10, 16)

2는 수요일

4) calendar.monthrange

monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 다링 며칠까지 있는 지를 튜플 형태로 돌려준다.

calendar.monthrange(2024, 10)

24년 10월 1일은 화요일이고, 31일까지 있다.


random

 

random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.

 

1) random, randint

  • random.random: 0.0과 1.0 사이의 실수 중에서 난수 값을 돌려줌
  • random.randint(시작범위, 끝범위): 시작~끝 사이의 정수 중에서 난수 값을 돌려줌
import random
random.random()

random.randint(시작, 끝)

 

[random 모듈 사용 예]

import random
def random_pop(data):
    number = random.randint(0, len(data)-1)
    return data.pop(number)

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]
    while data: print(random_pop(data))

위 random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 돌려주고, 꺼낸 요소는 pop 메서드에 의해 사라진다.

 

이 함수는 random 모듈의 choice 함수를 사용하여 아래와 같이 좀 더 직관적으로 만들 수도 있다.

import random
def random_pop(data):
    number = random.choice(data)
    data.remove(number)
    return number

 

2) random.choice 

random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다

 

3) random.shuffle

random.shuffle 함수는 리스트의 항목을 무작위로 섞는다.

data = [1, 2, 3, 4, 5]
random.shuffle(data)
data

 

[1, 2, 3, 4, 5] 리스트가 [3, 5, 4, 2, 1]로 변하였다.


webbrowser

 

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

 

[webbrowser 예: 웹 브라우저 실행하고 google.co.kr 접속하기]

import webbrowser
webbrowser.open("http://google.co.kr")

true는 명령이 잘 실행되었다는 의미

open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리게 한다.

webbrowser.open_new(https://www.google.co.kr")

 


threading 모듈

 

threading 모듈은 스레드를 다루는 모듈이다.

컴퓨터에서 동작하고 있는 프로그램을 프로세스(process) 라고 하는데, 보통 1개의 프로세스는 한 가지 일만 하지만 스레드를 사용하면 한 프로세스 안에서 2가지 또는 그 이상의 일을 동시에 수행할 수 있다.

import time

def long_task(): # 5초의 시간이 걸리는 함수
    for i in range(5):
        time.sleep(1) # 1초간 대기
        print("working:%s\n" % i)
        
print("Start")

for i in range(5): # long_task를 5회 수행
    long_task()
    
print("End")

 

long_task 함수는 수행하는 데 5초의 시간이 걸리는 함수이다.

위 프로그램은 이 함수를 총 5번 반복해서 수행하는 프로그램이며, 5초가 5번 반복되므로 총 25초의 시간이 걸린다.

 

그러나 스레드를 사용하면 5초의 시간이 걸리는 long_task 함수를 동시에 실행할 수 있어 시간을 줄일 수 있다.

아래와 같이 수정해 본다.

import time
import threading # 스레드를 생성하기 위해 필요한 모듈

def long_task(): # 5초의 시간이 걸리는 함수
    for i in range(5):
        time.sleep(1) # 1초간 대기
        print("working:%s\n" % i)
        
print("Start")

threads = []
for i in range(5):
    t = threading.Thread(target=long_task) # 스레드 생성
    threads.append(t)

for t in threads:
    t.start() # 스레드 실행
    
print("End")

 

threading.Thread를 사용하여 만든 스레드 객체가 동시 작업을 가능하게 해 주어 25초 걸리던 작업이 5초 정도에 수행된다.

 

그러나 위 프로그램을 실행해보면 "Start"와 "End"가 먼저 출력되고 그 이후에 스레드의 결과가 출력되며, 프로그램이 정상 종료되지 않는다.

따라서, "Start"가 출력되고 스레드의 결과가 출력된 후 마지막으로 "End"가 출력되게끔 하기 위해서는 프로그램을 아래와 같이 수정해야 한다.

 

스레드의 join 함수는 해당 스레드가 종료될 때까지 기다리게 한다.


[출처]

점프 투 파이썬, 이지스 퍼블리싱, 박응용

 

728x90
반응형