이전 내용
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)
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")
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 함수는 해당 스레드가 종료될 때까지 기다리게 한다.
[출처]
점프 투 파이썬, 이지스 퍼블리싱, 박응용
'[파이썬 Projects] > <파이썬 기초>' 카테고리의 다른 글
[파이썬] 시각화 - 타이타닉 데이터셋 활용 seaborn 실습 (0) | 2024.11.06 |
---|---|
[파이썬] 파이썬 기초: 파이썬 프로그래밍 (1) | 2024.10.18 |
[파이썬] 파이썬 기초: 라이브러리-1 (2) | 2024.10.16 |
[파이썬] 파이썬 기초: 패키지 (1) | 2024.10.16 |
[파이썬] 파이썬 기초: 모듈 (1) | 2024.10.15 |