首页 > 其他分享 >10 tqdm模块实现进度条_Parallel并行加快速度

10 tqdm模块实现进度条_Parallel并行加快速度

时间:2024-08-07 08:56:29浏览次数:16  
标签:tqdm 10 进度条 Parallel time import trange math

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:[email protected] 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对 tqdm模块实现进度条_Parallel并行加快速度 的介绍

关键词: tqdm模块实现进度条    Parallel并行加快速度

本文目录

Python实现进度条

简介:

示例:

简化一下形式

加快一下计算速度

使用trange,减慢运行速度

分轮次分批次进行训练

再添加一些信息

Python实现进度条

这个进度条在深度学习里非常常见

简介:

  • import math: 导入 Python 的标准数学库 math,用于访问数学函数。这里使用 math.factorial 函数来计算阶乘。
  • from tqdm import tqdm: 从 tqdm 库中导入 tqdm 函数。tqdm 是一个用于显示进度条的库,它可以帮助我们在长时间运行的操作中跟踪进度。

示例:

import math
from tqdm import tqdm
results = []

for i in tqdm(range(8000)):
  results.append(math.factorial(i))

简化一下形式

results = [math.factorial(x) for x in tqdm(range(8000))]

加快一下计算速度

使用并行的方式:

from joblib import Parallel, delayed

  • joblib: 一个用于并行计算和优化性能的库。Paralleldelayedjoblib 提供的两个重要工具,用于并行执行任务。
    • Parallel: 用于并行执行任务的类。可以指定 n_jobs 参数来设置并行运行的作业数量(即线程或进程数)。
    • delayed: 一个装饰器,用于将函数调用包装成一个延迟执行的任务,以便 Parallel 能够并行处理这些任务。
import math
import time
from tqdm import tqdm
from joblib import Parallel, delayed


#没有并行的操作
results = [math.factorial(x) for x in tqdm(range(8000))]

#有并行的操作
results = Parallel(n_jobs=2)(delayed(math.factorial)(x) for x in tqdm(range(8000)))

通过两者的时间比较,可以发现并行的方式确实显著的提高了运行速度

使用trange,减慢运行速度

import math
import time
import random
from tqdm import tqdm, trange

with trange(1000) as t:
  for i in t:
    sleeping_time = random.randint(1, 100)/100
    time.sleep(sleeping_time)

打印速度非常缓慢,就不显示了

分轮次分批次进行训练

import math
import time
import random
from tqdm import tqdm, trange

#写了trange自动有进度条
with trange(1000) as t:
  #分轮次
  for i in t:
    sleeping_time = random.randint(1, 100)/100
    time.sleep(sleeping_time)
    #每个轮次分10个批次(不需要接受值,所以直接用下划线_)
    for _ in trange(10):
      time.sleep(0.5)
    

再添加一些信息

import math
import time
import random
from tqdm import tqdm, trange

#写了trange自动有进度条
with trange(1000) as t:
  for i in t:
    #增加轮次信息
    t.set_description(f"Iteration number {i+1}")
    sleeping_time = random.randint(1, 100)/100
    time.sleep(sleeping_time)
    #增加后缀,something是随便写的,一般深度学习的时候会写成测试的准确度
    t.set_postfix(something=random.randint(0,100),
           sleeping_time=sleeping_time)
    
    if i%100 == 0 :
      for _ in trange(10):
        time.sleep(0.5)
    

上面是在jupyter notebook里运行的,没显示something

这个是在pycharm里运行的,显示了something

标签:tqdm,10,进度条,Parallel,time,import,trange,math
From: https://blog.csdn.net/ta683280/article/details/140971800

相关文章

  • Windows10 安装编译后的 pysqlcipher3-1.2.1 基于 Python 3.8.10
    Windows10安装编译后的pysqlcipher3-1.2.1基于Python3.8.10本文主要是将直接安装编译后的文件,不一定的成功,但是可以尝试使用,若无法直接安装,请参考编译过程,自行编译安装,编译过程见这里安装pysqlcipher3这里用32位举例因为64位安装完全相同,只需要把对应的位数换成64......
  • Flink实战(10)-checkpoint容错保证
    0前言程序在Flink集群运行,某个算子因为某些原因出现故障,如何处理在故障恢复后,如何保证数据状态,和故障发生之前的数据状态一致?1什么是checkpoint(检查点)?Checkpoint能生成快照(Snapshot)。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoin......
  • 洛谷 P4910题解
    题目大意现在穿T次手串,每根手串的长度分别为不同的n,有木和金两种珠子,相邻两颗珠子必须有一个是金。题目思路分析我们现在设穿到第n个珠子时用金的方案数为f[1][n],用木的方案数为f[0][n]如果第n个珠子为金,那么前一颗珠子是什么都可以,因此f[1][n]=f[1][n-1]+f[0][n-1]而如果......
  • 《LeetCode热题100》---<5.②普通数组篇五道>
    本篇博客讲解LeetCode热题100道普通数组篇中的五道题第三道:轮转数组(中等)第四道:除自身以外数组的乘积(中等)第三道:轮转数组(中等) 方法一:使用额外的数组classSolution{publicvoidrotate(int[]nums,intk){intlen=nums.length;int[]newAr......
  • 匿名内部类day10
    /*匿名内部类:语法定义格式:new抽象类/接口(){//要重写的方法}*/abstractclassDemo1{publicabstractvoidfun1();//publicabstractvoidfun2();}//classXXXextendsDemo1{//@Override//......
  • 接口类型的方法调用,使用匿名内部类day10
    /*接口类型的方法调用,使用匿名内部类匿名内部类:语法定义格式:new抽象类/接口(){//要重写的方法}*/interfaceInter1{voidfun1();}//classInter1ImplimplementsInter1{//@Override//publi......
  • 内部类 day10
    /*内部类:将一个类A定义在一个类B中,这个类A称之为内部类分类:成员内部类:将类定义在一个类中的成员位置上局部内部类:将类定义在一个方法中*/classOuter1{inta1=10;privateinta2=11;publicstaticinta3=12;class......
  • 成员内部类day10
    /*内部类常用的修饰符:static被静态的修饰可以直接通过类名.创建对象newOuter2.Inner1()private私有的需要在创建个方法来访问*///classOuter2{//staticinta1=10;//privatestaticinta2=11;//publicstaticinta3......
  • 权限修饰符 day10
    packagecom.shujia.day10.bao5;/*权限修饰符:publicprotected默认的private同一类中√√√√同一包子类,其他类√√√不同包子类......
  • 类,抽象类,接口作为方法参数类型的传参 day10
    /*形式参数基本类型:引用类型:类:当你看到一个类作为方法参数类型的时候,将来调用时需要传递该类及其该类的子类对象抽象类:当你看到一个抽象类作为方法的参数类型的时候,将来调用时需要传递继承该抽象类的具体子类对象......