Python进度条 - progressbar2

本文介绍了如何在Python中使用progressbar2库创建单线程和多进程的进度条。首先讲解了库的安装及基本用法,然后详细探讨了在多进程环境下结合multiprocessing.Pool实现进度条的技巧,并提供了添加traceback支持的扩展应用。
摘要由CSDN通过智能技术生成

一、单线程进度条

安装库:

pip install progressbar2

用法:

import time
import progressbar

# 可以是迭代器或列表
for i in progressbar.progressbar(range(100)): 
    # do something
    time.sleep(0.02)

参考来源:https://pypi.org/project/progressbar2/

二、多进程进度条

multiprocessing.Pool

from multiprocessing import Pool

def f(x):
    if x%2 == 0:
        cr = x*x
        print(cr)
        return cr
    else:
        return None

if __name__ == '__main__':
    p = Pool(5)
    result = p.map(f, [1, 2, 3, 4, 5, 6, 7, 8])
    print(result)


multiprocessing.Pool+进度条

from multiprocessing import Pool
import tqdm
import time

def _foo(my_number):
    square = my_number * my_number
    time.s
下面是使用 PyQt5 和 tqdm 模块实现的更新进度条示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton from PyQt5.QtCore import QThread, pyqtSignal from tqdm import tqdm class ProgressThread(QThread): progress_signal = pyqtSignal(int) def __init__(self, total): super().__init__() self.total = total def run(self): for i in tqdm(range(self.total)): self.progress_signal.emit(i) class ProgressBar(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 300, 100) self.setWindowTitle('Progress Bar') self.progress_bar = QProgressBar(self) self.progress_bar.setGeometry(20, 20, 260, 20) self.start_button = QPushButton('Start', self) self.start_button.setGeometry(20, 60, 75, 23) self.start_button.clicked.connect(self.start_progress) self.stop_button = QPushButton('Stop', self) self.stop_button.setGeometry(100, 60, 75, 23) self.stop_button.clicked.connect(self.stop_progress) self.show() def start_progress(self): self.thread = ProgressThread(100) self.thread.progress_signal.connect(self.update_progress) self.thread.start() def stop_progress(self): self.thread.terminate() def update_progress(self, value): self.progress_bar.setValue(value) if __name__ == '__main__': app = QApplication(sys.argv) bar = ProgressBar() sys.exit(app.exec_()) ``` 这个示例程序创建了一个简单的窗口,包含一个进度条和两个按钮。当用户点击“Start”按钮时,程序将启动一个后台线程来执行进度条更新任务。当用户点击“Stop”按钮时,程序将停止后台线程。进度条更新任务使用 tqdm 模块来显示进度条。通过使用 pyqtSignal,我们可以在后台线程和主线程之间进行通信,从而实现进度条的更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值