阿拉姆语、希伯来语和阿拉伯语中的闪米特语词根q-d-m通常与进度或进步有关。阿拉伯语单词taqaddum(?????)的意思是“进步”。进步很重要。正如每部感觉良好的电影都会告诉您的那样,旅程与目的地一样重要。大多数程序都有一个明确的目标,一个理想的最终状态。有时,计算这个最终状态可能需要很长时间。虽然计算机没有情感也不关心,但人有。人类不会乐于坐等而看不到任何明显的进步迹象。疑虑不断涌入。程序崩溃了吗?磁盘性能是否颠簸?操作系统是否将所有计算资源分配给其他任务?就像正义一样,进步必须被看到,而不仅仅是完成。Python库tqdm有助于明确取得进展。tqdm模块从控制台运行,但它也特别支持我最喜欢的环境之一,Jupyter。要将tqdm与Jupyter一起使用,您需要导入笔记本子模块并安装ipywidgets。notebook子模块与tqdm接口兼容。这意味着您可以进行一些导入时操作以导入正确的模块,同时保持tqdm的使用不变。诀窍是检查__main__模块是否具有全局变量get_ipython。虽然这只是一种启发式方法,但它是一种相当准确的方法:提前),每次迭代的时间都差不多。例如,有一种算法可以计算任何数字的平方根,从1作为猜测开始,然后计算改进的猜测:defimprove_guess(rt,n):return(rt+n/rt)/2稍微改进一下即可让你更接近那个平方根。比如可以计算2的平方根:guess=1target=2foriintqdm.trange(10):guess=improve_guess(guess,target)精确到小数点后10位!round(2-guess*guess,10)0.0有点复杂一个很好的例子是当元素的数量已知并且处理每个元素所花费的时间相似时。例如,你可以计算一些数字的乘积。为此,你需要一些随机数:importrandomnumbers=[random.uniform(0,2.8)foriinrange(100)]numbers[:5][2.6575636572230916,0.1286674965830302,1.063425781246375.41344365.13,0.45192978568125486]现在有了这些数字,可以将它们相乘。使用tqdm最简单的方法是包装一个Python迭代函数。数值是一样的,但是tqdm会显示一个进度条:result=1fornumintqdm.tqdm(numbers):result*=numresult2.4081854901728303tqdm输出然而,并不是所有的事情都是可以预测的。最不可预测的事情之一是网络速度。下载大文件时,衡量进度的唯一方法是检查下载了多少:url="https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz"importhttpxwithhttpx.stream("GET",url)asresponse:total=int(response.headers["Content-Length"])withtqdm.tqdm(totaltotal=total)asprogress:forchunkinresponse.iter_bytes():progress.update(len(chunk))tqdmoutput有时“嵌套”进度条是有意义的。例如,如果您正在下载一个目录,您将需要一个进度条来跟踪文件,并且每个文件都有一个进度条。这是一个示例(但实际上没有下载目录):files=[f"vid-{i}.mp4"foriinrange(4)]forfnameintqdm.tqdm(files,desc="files"):total=random.randrange(10**9,2*10**9)与tqdm.tqdm(totaltotal=total,desc=fname)asprogress:current=0whilecurrent
