当我的脚本正在执行一些可能需要时间的任务时,如何使用进度条?
例如,一个函数需要一些时间才能完成,True完成后返回。如何在函数执行期间显示进度条?
请注意,我需要实时实现这一点,所以我不知道该怎么做。我需要一个吗thread?我不知道。
目前,在执行函数时我没有打印任何内容,但如果有进度条就更好了。另外,我更感兴趣的是如何从代码的角度做到这一点。
要在执行耗时的函数时显示进度条,您可以使用库tqdm,这是一个用于在 Python 中显示进度条的流行库。您可以tqdm通过使用单独的线程或将任务分解为较小的块来与耗时的函数集成,以便您定期更新进度条。
tqdm
下面是一个示例,说明如何在执行耗时函数时使用单独的线程来更新进度条:
bash pip install tqdm
import time import threading from tqdm import tqdm def long_running_task(): # Simulate a long-running task time.sleep(10) return True def progress_bar(stop_event): with tqdm(total=100, desc="Progress", position=0, leave=True) as pbar: while not stop_event.is_set(): time.sleep(0.1) # Update progress bar every 0.1 seconds pbar.update(1) if pbar.n >= 100: pbar.n = 0 pbar.close() if __name__ == "__main__": stop_event = threading.Event() # Start the progress bar thread progress_thread = threading.Thread(target=progress_bar, args=(stop_event,)) progress_thread.start() # Run the long-running task result = long_running_task() # Stop the progress bar stop_event.set() # Wait for the progress bar thread to finish progress_thread.join() print(f"Task completed with result: {result}") ``` ### 将任务分解成块 如果您可以将长时间运行的任务分解为较小的块或步骤,则可以在每个步骤更新进度条。以下是示例: 1. `tqdm`如果尚未安装该库,请安装: ```bash pip install tqdm
import time from tqdm import tqdm def long_running_task_with_steps(total_steps): for _ in tqdm(range(total_steps), desc="Progress"): time.sleep(1) # Simulate a step taking time if __name__ == "__main__": total_steps = 10 # Number of steps in the long-running task long_running_task_with_steps(total_steps)
在此示例中,tqdm每次循环迭代时都会自动更新进度条。
Event
这两种方法都允许您显示需要时间的任务的进度条,但是它们之间的选择取决于您是否可以将任务分解为更小的步骤或需要将任务作为一个整体运行。