Comments (7)
the results that Parallel.map
returns are sorted, so you could do:
out = Parallel.each_with_index(ITEMS, in_threads: 6) { |item, index| "my output" }
puts out
capturing stdout would not work since that relies on replacing $stdout and that would not be thread local
if you want to get super hacky you could replace $stdout with a thread-aware StringIO that stores each threads output separately and then returns prints it in order when all processes have finished
from parallel.
That doesn't do the same thing as the example I've provided.
I'm interested in the ability to have a callback to print things (or save to disk, etc.) in order as they finish executing, not at the end
from parallel.
if you want to print as things are finishing you can use a finish hook docs
in that case it would just print the result
from parallel.
The finish hook with the example from the docs will be out of order.
Parallel.map('A'..'Z', in_threads: 6, finish: -> (item, i, result) { puts item }) { sleep rand }
I want the finish hook to be triggered in order. Try to run the example I gave if I'm unclear
from parallel.
require 'parallel'
want = 0
stack = []
finish = -> (item, i, result) do
if i == want
puts item # print current
want += 1
# print things already ready
stack[(i + 1)...].to_a.each do |old|
break unless old
puts old
want += 1
end
else
stack[i] = item # store for later
end
end
Parallel.map('A'..'Z', in_threads: 6, finish: finish) { sleep rand }
from parallel.
Yes, that's a more elegant and efficient solution.
I'm still hoping this would be built as a reusable solution into the parallel gem
from parallel.
PR welcome :)
finish_in_order: true
or so 🤷
from parallel.
Related Issues (20)
- Flaky test in ./spec/parallel_spec.rb:478
- Sidekiq integration HOT 3
- [Feature Request] Need access to the progress bar object HOT 2
- Rails 6.0.3: *** stack smashing detected *** HOT 3
- Process.fork is not supported by this Ruby HOT 7
- What is the recomended way to implement a semaphore or lock using this library? HOT 1
- Parallel causes a net slowdown HOT 6
- The problem with Parallel Gem and The MySQL server is running with the --read-only HOT 2
- How is it to more simply using that ActiveRecord::Base.connection.reconnect? HOT 2
- About parallel connection logic HOT 1
- ZeroDivisionError: float division by zero HOT 1
- Sidekiq + Parallel performance issues HOT 1
- Hangs indefinitely when used with EventedFileUpdateChecker HOT 5
- Use '{}' can't concat string properly HOT 1
- parallel groupby HOT 1
- net_http_args nil class exception HOT 2
- Segmentation fault HOT 10
- looking for more high level documentation HOT 1
- Ruby 3.5 to drop `win32ole` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from parallel.