라이브러리 - 파이썬

찌니·2021년 3월 14일

전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아 놓은 것이 바로 파이썬 라이브러리이다.
모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다. 그러기 위해서는 어떤 라이브러리가 존재하고 어떻게 사용하는지 알아야한다.
자주 사용되고 중요한 라이브러리를 중심으로 알아보자.
점프투파이썬 참고

sys

sys모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.

  • sys.argv
    명령 행에서 인수 전달하기

  • sys.exit
    강제로 스크립트 종료

  • sys.path
    자신이 만든 모듈 불러와 사용하기
    sys.path는 파이썬 모듈이 저장되어 있는 위치를 나타낸다. 즉, 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디서나 불러올 수 있다.

pickle

객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
다음 예는 pickle 모듈의 dump 함수를 사용해 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여준다.
dump 오라클함수는 데이터 타입코드, 길이(바이트) 및 expr의 내부 표현을 포함하는 VARCHAR2 값을 리턴한다.

다음은 pickle.dump로 저장한 파일을 pickle.load를 사용해 원래 있던 딕셔너리 객체(data) 상태 그대로 불로오는 예이다. 딕셔너리 외 어떤 자료형이든 저장하고 불러올 수 있다.

os

OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.

  • os.environ
    내 시스템의 환경 변수값을 알고 싶을 때
    시스템은 제각기 다른 환경 변수 값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값을 보여 준다.

    현재 시스템 정보이다. os.environ은 환경 변수에 대한 정보를 딕셔너리 객체로 돌려주기 때문에 다음과 같이 호출할 수 있다. patho 환경 변수 내용이다.

  • os.chdir
    디렉토리 위치 변경

  • os.getcwd
    디렉터리 위치 돌려받기.

  • os.system
    시스템 명령어 호출하기
    시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수도 있다.
    os.system('명령어')처럼 사용한다.

  • os.popen
    실행한 시스템의 명령어의 결괏값을 읽기 모드 형태의 파일 객체로 돌려받기

  • 기타 유용한 os 관련 함수

shutil

파일을 복사해 주는 파이썬 모듈이다.
src라는 이름의 파일을 dst로 복사해보자.만약 dst가 디렉터리 이름이라면 src라는 파일 이름으로 dst 디렉터리에 복사하고 동일한 파일 이름이 있을 경우엔 덮어쓴다.

glob

가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다 보면 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때가 있다. 이럴 때 사용하는 모듈이다.

  • glob(pathname)
    디렉터리에 있는 파일들을 리스트로 만들기

tempfile

파일을 임시로 만들어서 사용할 때 유용한 모듈이다.

time

시간과 관련된 time 모듈에는 함수가 굉장히 많다. 그 중 몇 가지를 알아보자.

  • time.time

  • time.localtime

  • time.asctime

  • time.ctime

  • time.strftime

  • time.sleep

calendar

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

  • calendar.calendar(연도,달) / calendar.prcal(연도)

  • calendar.weekday(연도, 월, 일)

  • calendar.monthrange(연도, 월)

random

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

  • random_pop 함수는 random 모듈의 choice 함수를 사용하여 더 직관적으로 만들 수도 있다.
    random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택해 돌려준다.

  • random.shuffle 함수를 사용하면 리스트의 항목을 무작위로 섞는다.

webbrowser

자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다.
다음 예제는 웹 브라우저를 자동으로 실행하고 해당 URL인 google.com으로 가게 해준다.

스레드를 다루는 threading 모듈

스레드 프로그래밍은 초보 프로그래머가 구현하기에는 매우 어려운 기술이다.

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

# thread_test.py
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_tast 함수는 수행하는 데 5초의 시간이 걸리는 함수이다. 위 프로그램은 이 함수를 총 5번 반복해서 수행하는 프로그램이다. 이 프로그램은 5초가 5번 반복되니 총 25초가 걸린다.
하지만 앞에서 설명했듯이 스레드를 사용하면 5초의 시간이 걸리는 long_tast함수를 동시에 실행할 수 있어 시간을 줄일 수 있다.

  • import threading
    이와 같이 프로그램을 수정하고 실행해 보면 25초 걸리는 작업이 5초에 수행된다. threading.Thread를 사용하여 만든 스레드 객체가 동시작업을 가능하게 해주기 때문이다.
# thread_test.py
import time
import threading  # 스레드를 생성하기 위해서는 threading 모듈이 필요하다.

def long_task():
    for i in range(5):
        time.sleep(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")
  • 하지만 위 프로그램을 실행해 보면 "Start"와 "End"가 먼저 출력되고 그 이후에 스레드의 결과가 출력되는 것을 확인할 수 있다. 그리고 프로그램이 정상 종료되지 않는다.
    "Start"가 출력되고 그 다음에 스레드의 결과가 출력된후 마지막 "End"가 출력되게 해보자

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

# thread_test.py
import time
import threading

def long_task():
    for i in range(5):
        time.sleep(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()

for t in threads:
    t.join()  # join으로 스레드가 종료될때까지 기다린다.

print("End")
profile
https://gggggeun.tistory.com/

0개의 댓글