끄적거림

running 진행상황 확인하기 in Jupyter notebook 본문

Python

running 진행상황 확인하기 in Jupyter notebook

Signing 2020. 5. 8. 17:40
728x90
반응형

최근 공부하다 한가지 꿀팁을 알게되어 공유하고자한다.

 

주피터 노트북(이하 노트북)을 사용하다보면, 굉장히 오래 걸리는 코드들이 있다.

그러면 현재 진행상황이 어느정도고 얼마나 더 걸리는지 따로 print를 하지 않는 이상 알기 힘들다.

 

이럴 때, 가시적으로 현재 진행 상황을 나타내주는 좋은 모듈이 있다.

 

 

바로, tqdm 이라는 패키지다.

!pip install tqdm

from tqdm import trange, notebook            # show progress-bar

노트북에서 위의 코드를 실행시켜 tqdm 패키지를 인스톨한다.

 

 

 

아래의 코드는 네이버 주식 데이터를 크롤링하는 일부의 코드다.

여기서 포인트는 for loop를 돌때 그냥 range 대신에

notebook.tqdm(range()) 를 사용하는 것이다.

data = []
# read multi page
# for page in range(100):
for page in notebook.tqdm(range(100)):         # show progress-bar
    surl = f'https://finance.naver.com/sise/sise_index_day.nhn?code=KPI200&page={page+1}'
    response = req.urlopen(surl)
    html = BeautifulSoup(response, 'html.parser')
    for tr in html.select('[summary^="일별"] > tr'):
        try:
            s1 = tr.select('td')[0].get_text().strip()
            s2 = tr.select('td')[1].get_text().strip()
            s3 = tr.select('td')[2].get_text().strip()
            s4 = tr.select('td')[3].get_text().strip()
            s5 = tr.select('td')[4].get_text().strip()
            s6 = tr.select('td')[5].get_text().strip()
            if s1:     # None은 False로 인식한다.
                data.append({
                    '날짜' : s1,
                    '체결가': s2,
                    '전일비': s3, 
                    '등락률': s4,
                    '거래량(천주)': s5,
                    '거래대금(백만)':s6
                })
        except Exception as err:
            pass
data = pd.DataFrame(data)
data

 

 

그러면 결과는 다음과 같이 출력이 된다.

 

실행 중 프로그래스바

 

실행 완료된 시점의 프로그래스바

 

 

 

특히 학습 시간이 오래걸리는 ML 코드같은 경우 이런 꿀팁을 활용한다면, 시간과 리소스를 좀 더 잘 활용할 수 있지 않을까한다.

728x90
반응형
Comments