我们在使用Python运行程序时,遇到较大数据时,运行时间总是会比较长,而又没有什么提示,我们就无法得知此时的程序是否在运行,运行到哪一步了,所以今天,我们尝试将进度条加到计算的程序中,下面以计算圆周率为例。
一、准备
这次的进度条我们将用到tqdm,这是一个比较强大的库函数
首先我们应该安装tqdm
第一步,按下Win+R打开命令输入框,并输入cmd,点击确定
第二步,找到IDLE文件(即平时打代码的程序),右击,点击属性,得到如下界面,再点击打开文件所在的位置
打开Scripts文件,可以看到pip文件
将pip文件直接拖至刚才输入cmd打开的界面
在pip.exe后方输入install tqdm(注意以空格为间隔),然后点击回车,这样我们就安装好了tqdm库函数
这时我们可以测试一下tqdm函数绘制出的进度条效果如何,代码如下
1 from tqdm import* 2 import time 3 for i in tqdm(range(10)): 4 time.sleep(0.1)
效果如图
二、编写计算圆周率的函数
计算圆周率的方法有很多种,下面我以打靶法为例,代码如下
1 import time 2 from random import random 3 from math import sqrt 4 5 DARTS=1000000 6 hits=0.0 7 time.clock() 8 for i in range(1,DARTS): 9 x,y=random(),random() 10 dist=sqrt(x**2+y**2) 11 if dist<=1.0: 12 hits=hits+1 13 pi=4*(hits/DARTS) 14 print("Pi值是{}.".format(pi)) 15 print("运行时间是:{:.5f}s".format(time.clock()))
三、汇总
将计算圆周率的代码与进度条的代码结合在一起,代码如下
1 from tqdm import tqdm 2 import time 3 from random import random 4 from math import sqrt 5 6 DARTS=1000000 7 hits=0.0 8 time.clock() 9 for i in range(1,DARTS): 10 x,y=random(),random() 11 dist=sqrt(x**2+y**2) 12 if dist<=1.0: 13 hits=hits+1 14 for i in tqdm(range(1,DARTS//100000+1)): 15 time.sleep(0.05) 16 pi=4*(hits/DARTS) 17 print("Pi值是{}.".format(pi)) 18 print("运行时间是:{:.5f}s".format(time.clock()))
最终效果如下
这样我们就完成了带有进度条的圆周率计算方法