mirror of
https://github.com/jbranchaud/til
synced 2026-01-04 15:48:01 +00:00
Add Progress Reporting To Long Running Script as a Ruby TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1355 TILs and counting..._
|
_1356 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1045,6 +1045,7 @@ _1355 TILs and counting..._
|
|||||||
- [A Shorthand For Rerunning Failed Tests With RSpec](ruby/a-shorthand-for-rerunning-failed-tests-with-rspec.md)
|
- [A Shorthand For Rerunning Failed Tests With RSpec](ruby/a-shorthand-for-rerunning-failed-tests-with-rspec.md)
|
||||||
- [Add Comments To Regex With Free-Spacing](ruby/add-comments-to-regex-with-free-spacing.md)
|
- [Add Comments To Regex With Free-Spacing](ruby/add-comments-to-regex-with-free-spacing.md)
|
||||||
- [Add Linux As A Bundler Platform](ruby/add-linux-as-a-bundler-platform.md)
|
- [Add Linux As A Bundler Platform](ruby/add-linux-as-a-bundler-platform.md)
|
||||||
|
- [Add Progress Reporting To Long-Running Script](ruby/add-progress-reporting-to-long-running-script.md)
|
||||||
- [Are They All True?](ruby/are-they-all-true.md)
|
- [Are They All True?](ruby/are-they-all-true.md)
|
||||||
- [Assert About An Object's Attributes With RSpec](ruby/assert-about-an-objects-attributes-with-rspec.md)
|
- [Assert About An Object's Attributes With RSpec](ruby/assert-about-an-objects-attributes-with-rspec.md)
|
||||||
- [Assoc For Hashes](ruby/assoc-for-hashes.md)
|
- [Assoc For Hashes](ruby/assoc-for-hashes.md)
|
||||||
|
|||||||
46
ruby/add-progress-reporting-to-long-running-script.md
Normal file
46
ruby/add-progress-reporting-to-long-running-script.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Add Progress Reporting To Long-Running Script
|
||||||
|
|
||||||
|
A script that is going to iterate over and process a ton of data can take a
|
||||||
|
long time to run. It can be hard to predict how long it will take to run. So,
|
||||||
|
it is nice to have some indication of it's progress as it goes.
|
||||||
|
|
||||||
|
Here is a small snippet that I add to the main loop so that I have some
|
||||||
|
feedback while the script runs:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
running_count = 0
|
||||||
|
|
||||||
|
tons_of_data.each do |item|
|
||||||
|
running_count += 1
|
||||||
|
if running_count % 1000 == 0
|
||||||
|
print '@'
|
||||||
|
elsif running_count % 100 == 0
|
||||||
|
print '*'
|
||||||
|
else
|
||||||
|
print '.'
|
||||||
|
end
|
||||||
|
|
||||||
|
# process this `item` ...
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Then I get some output that looks like this over time as the script runs.
|
||||||
|
|
||||||
|
```
|
||||||
|
...............................................................................
|
||||||
|
....................*..........................................................
|
||||||
|
.........................................*.....................................
|
||||||
|
..............................................................*................
|
||||||
|
...............................................................................
|
||||||
|
....*..........................................................................
|
||||||
|
.........................*.....................................................
|
||||||
|
..............................................*................................
|
||||||
|
...................................................................*...........
|
||||||
|
...............................................................................
|
||||||
|
.........*.....................................................................
|
||||||
|
..............................*................................................
|
||||||
|
...................................................@..................
|
||||||
|
```
|
||||||
|
|
||||||
|
I can get a sense of how quickly it is processing each record and roughly count
|
||||||
|
how far along it is.
|
||||||
Reference in New Issue
Block a user