Python进度条库tqdm最新版发布

版权申诉
5星 · 超过95%的资源 4 下载量 36 浏览量 更新于2024-10-10 收藏 69KB ZIP 举报
资源摘要信息:"Python库 | tqdm-4.53.0-py2.py3-none-any.whl" tqdm是一个快速、扩展性强的Python进度条库,能够为长时间运行的循环添加一个进度提示信息,通常用于命令行界面,提升用户体验。库名tqdm来源于阿拉伯语“进度”一词,其设计目的是为了给长时间运行的操作提供即时反馈,从而加速迭代开发过程。 tqdm的核心功能是通过在标准输出流中显示进度条来报告进度信息。进度条会显示当前进度、估计剩余时间以及完成百分比,这些都是自动计算得出的。它支持多种操作环境,包括常规的命令行界面和Jupyter Notebook。 tqdm适用于多种情况,比如文件读写操作、网络请求、数据处理等,几乎所有需要显示进度条的场景。它甚至可以嵌入到其他库中,增强这些库的用户交互体验。tqdm的使用非常简单,通常只需要几行代码即可集成到现有的循环结构中。 tqdm库的安装通常通过pip包管理器完成,由于给定的文件是一个`.whl`文件,这意味着它是一个Python Wheel格式的分发包,Wheel格式是一种预先构建好的包格式,可以加速Python包的安装过程。文件名中的`py2.py3`表示该Wheel包支持Python 2和Python 3两个版本,`none`表示该包不需要平台特定的构建依赖,`any`表示它适用于任何平台。 在使用tqdm时,程序员通常需要导入tqdm模块,然后用tqdm封装原有的迭代器,例如列表、文件句柄等。在循环中使用tqdm封装后的迭代器,tqdm就会自动在控制台上生成进度条。 tqdm的使用示例如下: ```python from tqdm import tqdm import time for i in tqdm(range(100)): time.sleep(0.1) # 模拟长时间运行的操作 ``` 在上面的示例中,我们导入了tqdm,然后对一个包含100个元素的range进行迭代,每次迭代暂停0.1秒。在迭代过程中,tqdm会自动在控制台输出一个进度条,显示完成的百分比以及预计剩余时间。 tqdm支持多种配置选项,允许用户自定义进度条的外观和行为。它还支持嵌套进度条,这样可以处理嵌套循环中的进度显示。tqdm的扩展性很强,可以通过继承和重写相关类来自定义进度条的显示。 此外,tqdm还支持异步操作和多线程环境,这使得在进行I/O密集型任务或计算密集型任务时,用户依然能够看到进度信息。开发者还可以将tqdm与日志库结合使用,将进度信息记录到日志文件中。 tqdm库自2012年首次发布以来,经过不断的更新和维护,已经成为Python生态系统中不可或缺的一部分。它被广泛应用于各种大小的项目中,从简单的脚本到大型的科学计算项目,都能看到tqdm的身影。

以下是matlab代码实现: 复制 % 22个点的坐标 points = [-0.54, 2.38; 0.05, 2.41;0.12,1.21;0.22,3.12;0.82,2.28;0.78,-1.98;1.42,6.72;1.52,5.48;1.38,5.02;1.41,4.53;1.98,2.62;1.78,1.83;1.82,0.74;2.91,1.78;3.52,-0.82;3.62,3.18;3.71,-0.21;4.18,1.85;4.25,1.12;4.03,-2.02;5.02,2.82;6.32,-0.54;]; % 固定的三个点的坐标 A = [1.34, -1.18]; B = [1.72, 1.32]; C = [3.75, 1.95]; % 初始点x为所有点的重心 x = mean(points); % 初始禁忌表为空 tabu_list = []; % 禁忌期限为1 tabu_tenure = 1; % 禁忌表长度为22 max_tabu_size = 22; while true % 计算每个点到x和A、B、C三点的距离 distances_x = pdist2(points, x); distances_A = pdist2(points, A); distances_B = pdist2(points, B); distances_C = pdist2(points, C); % 根据距离找到每个点的下属点 [~, idx_x] = min(distances_x); [~, idx_A] = min(distances_A); [~, idx_B] = min(distances_B); [~, idx_C] = min(distances_C); % 如果该点不是x的下属点,则将其列入禁忌表 if idx_x ~= idx_A && idx_x ~= idx_B && idx_x ~= idx_C && ~ismember(idx_x, tabu_list) tabu_list(end+1) = idx_x; end % 如果禁忌表已满,则删除最早加入的点 if numel(tabu_list) > max_tabu_size tabu_list(1) = []; end % 用剩余的点重新计算x的下属点 remaining_points = setdiff(1:size(points,1), tabu_list); x_new = mean(points(remaining_points, :)); distances_x_new = pdist2(points, x_new); [~, idx_x_new] = min(distances_x_new); % 如果新的下属点在禁忌表中,则将其从禁忌表中移除 if ismember(idx_x_new, tabu_list) tabu_list(tabu_list == idx_x_new) = []; end % 更新x为新的下属点的重心 x = mean(points([remaining_points, idx_x_new], :)); % 如果禁忌表中的点不再变化,则停止迭代 if numel(unique(tabu_list)) == numel(tabu_list) break; end end % 输出符合规定的坐标 disp(points(setdiff(1:size(points,1), tabu_list), :)); 帮我运行出代码的结果

2023-05-19 上传