如何根据已处理项目的数量而不是 "costs" 和 "ruby-progressbar" 的数量来显示进度?
How to show progress based on the number of processed items instead of the number of their "costs" with "ruby-progressbar"?
让我们用随机数初始化一个数组。
现在让我们创建一个 ProgressBar
并将所有数字的总和作为其大小。
我们可以很容易地遍历所有数字并随着每个数字增加进度条,这给了我们一个非常整洁和精确的进度:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
progress_bar = ProgressBar.create total: items.sum, format: '%a %e %P% Processed: %c from %C items'
items.each do |item|
sleep item / 100.0
progress_bar.progress += item
end
但是,用户有兴趣查看在进行过程中处理了多少项目,而不是项目的加权成本。现在我们显示 Processed: 270 from 516 items
是已处理项目的总和与总和的比值。相反,我想显示 Processed: 53 from 100 items
,但在后台保留总和和递增,否则进度条将不准确。
ruby-progressbar
优惠 the following flags for formatting。
我没有看到任何用于放置占位符或派生值的选项。
您可以 customize format string in realtime while processing 并自行更新格式字符串中的值。下面是修改后的脚本,向您展示我的意思:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
current = 0
count = items.count
progress_bar = ProgressBar.create total: items.sum, format: "%a %e %P% Processed: #{current} from #{count} items"
items.each do |item|
sleep item / 100.0
current += 1
progress_bar.format = "%a %e %P% Processed: #{current} from #{count} items"
progress_bar.progress += item
end
示例输出:Time: 00:00:01 ETA: 00:00:04 29.48% Processed: 27 from 100 items
让我们用随机数初始化一个数组。
现在让我们创建一个 ProgressBar
并将所有数字的总和作为其大小。
我们可以很容易地遍历所有数字并随着每个数字增加进度条,这给了我们一个非常整洁和精确的进度:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
progress_bar = ProgressBar.create total: items.sum, format: '%a %e %P% Processed: %c from %C items'
items.each do |item|
sleep item / 100.0
progress_bar.progress += item
end
但是,用户有兴趣查看在进行过程中处理了多少项目,而不是项目的加权成本。现在我们显示 Processed: 270 from 516 items
是已处理项目的总和与总和的比值。相反,我想显示 Processed: 53 from 100 items
,但在后台保留总和和递增,否则进度条将不准确。
ruby-progressbar
优惠 the following flags for formatting。
我没有看到任何用于放置占位符或派生值的选项。
您可以 customize format string in realtime while processing 并自行更新格式字符串中的值。下面是修改后的脚本,向您展示我的意思:
require 'ruby-progressbar'
items = Array.new(100) { rand 1..10 }
current = 0
count = items.count
progress_bar = ProgressBar.create total: items.sum, format: "%a %e %P% Processed: #{current} from #{count} items"
items.each do |item|
sleep item / 100.0
current += 1
progress_bar.format = "%a %e %P% Processed: #{current} from #{count} items"
progress_bar.progress += item
end
示例输出:Time: 00:00:01 ETA: 00:00:04 29.48% Processed: 27 from 100 items