Python의 진행률 표시 줄

Manav Narula 2023년1월30일
  1. Python에서tdqm모듈을 사용하여 진행률 표시 줄 만들기
  2. Python에서progressbar모듈을 사용하여 진행률 표시 줄 만들기
  3. Python에서 자신 만의 함수를 만들어 진행률 표시 줄 만들기
Python의 진행률 표시 줄

프로그래밍 세계에서 우리는 많은 양의 코드로 작업합니다. 프로그램을 컴파일하고 실행하는 데 많은 시간이 걸릴 수 있습니다. 따라서 얼마나 많은 진전이 있었는지와 프로그램의 예상 완료 시간을 아는 것이 약간 도움이됩니다. 이러한 상황에서는 Python에서 진행률 표시 줄을 사용할 수 있습니다. 또한 프로그램이 중간에 중단되었는지 여부를 식별하는 데 도움이 될 수 있습니다.

Python에는이 작업에 도움이되는 프로그램의 간단한 진행률 표시 줄을 만드는 데 도움이되는 많은 라이브러리가 있습니다. 이 튜토리얼에서는 각 방법을 하나씩 설명합니다.

Python에서tdqm모듈을 사용하여 진행률 표시 줄 만들기

tdqm라이브러리에는 기본 진행률 표시 줄을 만들기위한 빠르고 효율적인 프레임 워크가 있습니다. 터미널, Python 노트북에서 잘 작동하며 Windows, Linux 및 macOS와 호환됩니다.

다음 코드에서는이 모듈의 함수를 사용하여 간단한 진행률 표시 줄을 만듭니다.

from time import sleep
from tqdm import tqdm

for i in tqdm(range(10)):
    sleep(0.2)

루프를 반복하고 반복 할 때마다 진행률 표시 줄도 증가합니다. sleep()함수는 지정된 몇 초 동안 컴파일러를 일시 중지하는 데 사용됩니다. 기본적으로 막대는 남은 시간, 초당 반복 및 백분율을 표시합니다.

이 튜토리얼에서 논의 된 모든 모듈 중에서이 모듈은 오버 헤드가 가장 적습니다.

Python에서progressbar모듈을 사용하여 진행률 표시 줄 만들기

progressbar모듈은tdqm모듈과 같은 거의 모든 작업을 수행합니다. 이 외에도 진행률 표시 줄에 애니메이션을 적용하고 진행률 표시 줄에 표시되는 위젯을 사용하는 옵션이 있습니다.

다음 코드는 이에 대한 예를 보여줍니다.

import time
import progressbar

for i in progressbar.progressbar(range(100)):
    time.sleep(0.02)

progressbar2는 Python에도 존재하며progressbar의 포크입니다. 강력하고 사용자 정의 가능한 기능으로 인해 매우 인기가 있습니다. 또한 진행률 표시 줄이있는 인쇄 문을 지원합니다. 단점은이 모듈이 수년 동안 유지되지 않았다는 것입니다.

진행률 표시 줄을 만드는 데 도움이 될 수있는alive-progress,progress와 같은 더 많은 라이브러리를 사용할 수 있지만이 두 라이브러리가 가장 자주 사용됩니다. 그들 사이의 유일한 차이점은 이러한 라이브러리가 제공하는 애니메이션 및 기타 사용자 정의입니다.

Python에서 자신 만의 함수를 만들어 진행률 표시 줄 만들기

진행률 표시 줄과 유사한 간단한 함수를 만들 수도 있습니다. 아래 코드는이를 구현합니다.

import time
import sys


def progressbar(it, prefix="", size=60, file=sys.stdout):
    count = len(it)

    def show(j):
        x = int(size * j / count)
        file.write("%s[%s%s] %i/%i\r" % (prefix, "#" * x, "." * (size - x), j, count))
        file.flush()
        file.write("\n")

    show(0)
    for i, item in enumerate(it):
        yield item
        show(i + 1)
        file.write("\n")
    file.flush()


for i in progressbar(range(15), "Computing: ", 40):
    time.sleep(0.1)

출력:

Computing: [........................................] 0/15
Computing: [##......................................] 1/15
Computing: [#####...................................] 2/15
Computing: [########................................] 3/15
Computing: [##########..............................] 4/15
Computing: [#############...........................] 5/15
Computing: [################........................] 6/15
Computing: [##################......................] 7/15
Computing: [#####################...................] 8/15
Computing: [########################................] 9/15
Computing: [##########################..............] 10/15
Computing: [#############################...........] 11/15
Computing: [################################........] 12/15
Computing: [##################################......] 13/15
Computing: [#####################################...] 14/15
Computing: [########################################] 15/15

필요한 총 반복 횟수를 계산하고 반복 할 때마다#기호를 증가시켜 인쇄합니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn