首页 > 编程问答 >Python进度条

Python进度条

时间:2024-07-29 04:14:44浏览次数:12  
标签:python progress-bar

当我的脚本正在执行某些可能需要时间的任务时,如何使用进度条?

例如,一个需要一些时间才能完成并在完成后返回 True 的函数。如何在函数执行期间显示进度条?

请注意,我需要实时显示进度条,所以我不知道该怎么办。我需要 thread 为此吗?我不知道。

现在在执行函数时我没有打印任何内容,但是进度条会很好。此外,我更感兴趣的是如何从代码的角度来完成此操作。


可以使用 tqdm 库在 Python 中创建进度条。 tqdm 会自动估计剩余时间,并在简洁的单行输出中显示进度条。以下是使用 tqdm 的几种方法:

1. 使用 tqdm 循环迭代:

如果的函数正在循环中执行某些操作,则可以使用 tqdm 直接包装迭代器:

from tqdm import tqdm
import time

def my_function(n):
    for i in tqdm(range(n)):
        # 模拟一些工作
        time.sleep(0.1)
    return True

result = my_function(10)  # 进度条将在函数执行时显示
print(result)

这将在循环迭代时显示一个进度条,并自动更新进度。

2. 使用 tqdm.trange 进行基于范围的迭代:

tqdm.trange tqdm(range(...)) 的一个简写形式,使的代码更简洁:

from tqdm import trange
import time

def my_function(n):
    for i in trange(n):
        # 模拟一些工作
        time.sleep(0.1)
    return True

result = my_function(10)
print(result)

3. 手动更新 tqdm

如果的函数没有循环,或者需要更精细地控制进度条的更新,可以手动更新它:

from tqdm import tqdm
import time

def my_function(n):
    progress = tqdm(total=n)  # 创建总迭代次数为 n 的进度条
    for i in range(n):
        # 模拟一些工作
        time.sleep(0.1)
        progress.update(1)  # 每次迭代后更新进度条
    progress.close()  # 完成后关闭进度条
    return True

result = my_function(10)
print(result)

在所有这些示例中,进度条将在函数执行时实时更新。不需要使用线程,除非的函数具有阻塞 I/O 操作,在这种情况下,使用线程可以防止 GUI 冻结。

请记住,这些只是使用 tqdm 的一些基本方法。它提供了许多其他功能,例如自定义进度条的外观、显示估计的剩余时间等等。可以查看 tqdm 文档以了解更多信息: https://pypi.org/project/tqdm/

标签:python,progress-bar
From: 3160699

相关文章