반응형

Multi-Progress 표시하기

작성 계기

이미지 유사도 검색 프로토타입 엔진을 만드는 과정에서 멀티 프로그래스를 사용하게 되었다. 문제는 검색을 하는 데이터가 많기 때문에 프로토타입 종료를 위한 테스트에 사용되는 데이터의 양이 많기 때문에 로드하는 데 생각보다 시간이 많이 걸린다.

문제는 설치 및 시연 시스템을 구축업무를 다른 사람이 어느정도 진행이 되고 있는지를 표시할 화면 필요하다. 그래서 찾던 중 스택오버플러우 형님의 코드를 확인하게 되었다. 문제는 원본 url을 메모를 안해서 잊어 버렸지만;;; 뭐 검색에 시간이 걸렸으니 다른 사람에게라도 도움이 되라고 기록으로 남긴다.

주의 사항

본래 curses 모듈은 유닉스 계열 터미널에서만 지원이 된다. 하지만, windows-curses 모듈을 pip로 설치를 하면, 해결이 된다. 모듈명 등 모든 것이 본래의 curses와 같아서 해당 모듈을 사용한 python 코드는 호환이 된다. 나중에는 내장 모듈로 이관되기를 희망한다.

>pip install windows-curses

예시 코드

import curses
import time

def report_progress(filename, progress):
    """progress: 0-10"""
    stdscr.addstr(0, 0, "Moving file: {0}".format(filename))
    stdscr.addstr(1, 0, "Total progress: [{1:10}] {0}%".format(progress * 10, "#" * progress))
    stdscr.refresh()

if __name__ == "__main__":
    stdscr = curses.initscr()
    curses.noecho()
    curses.cbreak()

    try:
        for i in range(10):
            report_progress("file_{0}.txt".format(i), i+1)
            time.sleep(0.5)
    finally:
        curses.echo()
        curses.nocbreak()
        curses.endwin()

참고 자료

반응형

+ Recent posts