我正在从(降序)时间订购的图库中下载图像。我想停下来,当我们看到已经下来的照片时。
require 'thread/pool'
def getimg(uri)
#...
if File.exist? filename
raise "Already done." # something like this
end
#...
end
pool = Thread.pool(4)
thumbs.each do |a|
pool.process {
getimg(URI(a.attr('href')))
}
end
答案 0 :(得分:2)
如何传递池对象并使用pool.shutdown
?
require 'thread/pool'
def getimg(uri, pool) # <----
#...
if File.exist? filename
pool.shutdown # <--------
return # <------
end
#...
end
pool = Thread.pool(4)
thumbs.each do |a|
pool.process {
getimg(URI(a.attr('href')), pool) # <----
}
end
根据the Thread::Pool#process
code comment:
关闭池,它将阻塞,直到所有任务都完成运行。
<强>更新强>
使用shutdown!
代替shutdown
。
关闭!立即关闭游泳池而不执行任务。