首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Peach并行gem进行数组处理时,如何在Ruby中打印进度指示器?

在使用Peach并行gem进行数组处理时,如何在Ruby中打印进度指示器?
EN

Stack Overflow用户
提问于 2014-10-08 09:56:59
回答 1查看 466关注 0票数 0

这种方法不起作用,因为添加到变量"a“不是原子操作,因此不是线程安全的:

代码语言:javascript
复制
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

同样也不能完美地工作,计数器有时会弹跳:

代码语言:javascript
复制
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;

任何其他方法,使进度指标,最好是百分比,不同于印刷“。还是"#"?

EN

回答 1

Stack Overflow用户

发布于 2014-10-08 10:33:32

你有没有考虑过使用ProgressBar gem?

Progressbar

它具有高度的可配置性。

您应该能够执行如下所示的操作。

代码语言:javascript
复制
pb = ProgressBar.create(:title => "Items", :starting_at => 10, :total => 100, :format => '%a %B %p%% %t')
pb.increment

这将为您提供如下所示的输出。

代码语言:javascript
复制
Time: --:--:--                                                   0% Progress
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26248081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档