这种方法不起作用,因为添加到变量"a“不是原子操作,因此不是线程安全的:
require "peach"
t=(1..500000).map{ rand};
a=0;
t2=t.pmap(4) do |z|
a+=1;
if a % 10000==0 then
print "#{a} ";
print 13.chr;
end;
Math.sin(3.14*z);
end同样也不能完美地工作,计数器有时会弹跳:
require "peach"
t=(1..500000).map{ rand};
t2=t.collect.with_index.pmap(4) do |z,i|
if i % 10000==0 then
print "#{(100*(i.fdiv t.size)).round(2)}";
print 13.chr;
end;
Math.sin(3.14*z);
end;任何其他方法,使进度指标,最好是百分比,不同于印刷“。还是"#"?
发布于 2014-10-08 10:33:32
你有没有考虑过使用ProgressBar gem?
它具有高度的可配置性。
您应该能够执行如下所示的操作。
pb = ProgressBar.create(:title => "Items", :starting_at => 10, :total => 100, :format => '%a %B %p%% %t')
pb.increment这将为您提供如下所示的输出。
Time: --:--:-- 0% Progresshttps://stackoverflow.com/questions/26248081
复制相似问题