파이썬 실행 도중 일시 정지하는 방법은? - time모듈 이용하기

2021. 5. 17. 06:54

time은 파이썬에 내장된 기본 모듈이다. 별도의 패키지를 설치하지 않고 사용할 수 있다. 코드는 컴퓨터가 실행하기 때문에, 반복작업을 굉장히 빨리 처리할 수 있다. 그래서 이러한 작업을 처리할 때 time모듈을 이용해야 하는 경우가 많다. 오늘은 time모듈을 활용하는 방법에 대해서 알아보도록 하겠다.

 

파이썬 time

 

 

1. 웹크롤링할 때

웹크롤링을 하면 아래와 같이 for문을 이용해서, 다수의 웹페이지 정보를 수집할 때가 많다. 이 때 대상 웹서버가 다르면 모르겠지만, 하나라면 비정상적인 접근으로 판단하고 차단한다. ( 필자도 예전에 경마 데이터를 수집할 때 차단된 경험이 있다. )

for i in range(0,100):
    웹크롤링 코드

 

그래서, time모듈을 이용해서 최대한(?) 사람이 하는 것처럼 시간 간격을 두고 웹페이지 데이터를 수집한다. 이 때 시간간격이 동일해도, 봇으로 판단하고 차단할 수 있다. 그래서 random모듈과 같이 이용하여, 랜덤하게 시간 간격을 두고 데이터를 수집한다.

import time
import random

for i in range(0,100):
    웹크롤링 코드
    time.sleep(random.randint(3, 7))


sleep은 정해진 시간(초) 동안 실행을 일시정지 해주는 함수이다. randint함수는 입력파라미터로 들어간 숫자 중의 하나를 랜덤하게 반환해주는 함수이다. 그래서 웹크롤링 뒤의 코드는 3에서 7초 사이로 랜덤하게 일시정지하게 해 준다.

 

sleep



2. 시간을 측정할 때

time모듈의 time함수를 이용하면, 초단위로 시간을 출력해준다. 그래서 특정 코드나 페이지의 속도를 측정하기에 용이하다. 3초간 일시정지하고, 시간을 time함수로 구한 다음에 걸린 시간을 측정해보았다.

import time

s = time.time()
time.sleep(3)
e = time.time()
print(e-s)

[결과]
3.000624895095825

 

 

하지만, 시간을 측정할 때는 timeit 모듈을 사용하는 것이 효과적이다. timeit모듈을 사용하는 방법이 궁금하다면, 아래 포스팅을 참고하기 바란다.
( 참조: 파이썬 timeit 사용법 알아보기 )

 


오늘은 이렇게 time모듈에 대해서 알아보았다. sleep함수는 코딩을 하다보면, 굉장히 많이 사용하기 때문에 어느새 익숙해진다. random모듈도 같이 자주 사용하니 익혀두는 것이 좋다.


파이썬에는 이미 개발된 패키지들이 많아, 이를 활용하면 더 빠르고 효율적으로 원하는 작업들을 할 수 있다. 이런 패키지들에는 어떤 것들이 있는지 알아보았다. 자세한 내용이 궁금하다면 아래 포스팅을 참조하기 바란다.
( 참조: 파이썬 패키지 활용, 어떤 좋은 패키지들이 있을까?! )

댓글()