Class: PgConduit::ParallelStreamReader
- Inherits:
-
Object
- Object
- PgConduit::ParallelStreamReader
- Defined in:
- lib/pg_conduit/parallel_stream_reader.rb
Overview
A multi threaded stream reader
Instance Method Summary collapse
-
#initialize(query_stream, threads: 5, queue_max_size: 1000) ⇒ ParallelStreamReader
constructor
A new instance of ParallelStreamReader.
-
#read {|Hash| ... } ⇒ Object
Read A QueryStream and yield it’s rows.
Constructor Details
#initialize(query_stream, threads: 5, queue_max_size: 1000) ⇒ ParallelStreamReader
Returns a new instance of ParallelStreamReader.
8 9 10 11 12 |
# File 'lib/pg_conduit/parallel_stream_reader.rb', line 8 def initialize(query_stream, threads: 5, queue_max_size: 1000) @queue = SizedQueue.new(queue_max_size) @workers = threads @stream = query_stream end |
Instance Method Details
#read {|Hash| ... } ⇒ Object
Read A QueryStream and yield it’s rows
18 19 20 21 22 23 24 |
# File 'lib/pg_conduit/parallel_stream_reader.rb', line 18 def read(&callback) reader = read_stream(@stream) workers = dispatch_workers(&callback) reader.join workers.each { |t| t.join } :ok end |