parallel 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1cfb32f76c7f232bcd3f44e8370af1e61882de3a
4
- data.tar.gz: edab2b1cf2013b37cb7a58908750bfb1221327a8
3
+ metadata.gz: 12ab9909c74851e485eb8565aec2216e9338b300
4
+ data.tar.gz: 44ec37a9e9ca726a406ccd40e8f34224950ce901
5
5
  SHA512:
6
- metadata.gz: 99aa1aaefc20811d7540d607521f76b0edf10b09f5e96d1997341b5a12305d136355ae62e54380d5095111840d2258f8aa09e7a36abff52fdd79cb8f3d392c30
7
- data.tar.gz: 3f4255effe94025fa160ec1ef0f47a1a319c7036a4910f762b95218a7ddcc7b118edc60fb884b2ba8af39959e6b74b51d7b16d1dd8d235ed89ec28505997019f
6
+ metadata.gz: 2d427df65610e20fb2b7da6c572565de3c9cb6dc6fc3a5b483f41d30514675d67b47f05a51579f04ab0a384cb642b5aef272e9c682d584c9e92c43762fb0bd2a
7
+ data.tar.gz: 2f48e8be3267f707ba4d43596d2489e7c54564be466a9155bbd88991e454110e8406bf247436bcca0ac12fcd1d867f2fda5741e71111b7611629e41a17f5fc12
data/lib/parallel.rb CHANGED
@@ -246,6 +246,14 @@ module Parallel
246
246
  map(array, options.merge(:with_index => true), &block)
247
247
  end
248
248
 
249
+ def worker_number
250
+ Thread.current[:parallel_worker_number]
251
+ end
252
+
253
+ def worker_number=(worker_num)
254
+ Thread.current[:parallel_worker_number] = worker_num
255
+ end
256
+
249
257
  private
250
258
 
251
259
  def add_progress_bar!(job_factory, options)
@@ -274,6 +282,7 @@ module Parallel
274
282
  end
275
283
 
276
284
  def work_direct(job_factory, options, &block)
285
+ self.worker_number = 0
277
286
  results = []
278
287
  while set = job_factory.next
279
288
  item, index = set
@@ -282,6 +291,8 @@ module Parallel
282
291
  end
283
292
  end
284
293
  results
294
+ ensure
295
+ self.worker_number = nil
285
296
  end
286
297
 
287
298
  def work_in_threads(job_factory, options, &block)
@@ -290,7 +301,8 @@ module Parallel
290
301
  results_mutex = Mutex.new # arrays are not thread-safe on jRuby
291
302
  exception = nil
292
303
 
293
- in_threads(options) do
304
+ in_threads(options) do |worker_num|
305
+ self.worker_number = worker_num
294
306
  # as long as there are more jobs, work on one of them
295
307
  while !exception && set = job_factory.next
296
308
  begin
@@ -365,13 +377,13 @@ module Parallel
365
377
 
366
378
  # create a new replacement worker
367
379
  running = workers - [worker]
368
- workers[i] = worker(job_factory, options.merge(started_workers: running), &blk)
380
+ workers[i] = worker(job_factory, options.merge(started_workers: running, worker_number: i), &blk)
369
381
  end
370
382
 
371
383
  def create_workers(job_factory, options, &block)
372
384
  workers = []
373
- Array.new(options[:count]).each do
374
- workers << worker(job_factory, options.merge(:started_workers => workers), &block)
385
+ Array.new(options[:count]).each_with_index do |_, i|
386
+ workers << worker(job_factory, options.merge(started_workers: workers, worker_number: i), &block)
375
387
  end
376
388
  workers
377
389
  end
@@ -381,6 +393,8 @@ module Parallel
381
393
  parent_read, child_write = IO.pipe
382
394
 
383
395
  pid = Process.fork do
396
+ self.worker_number = options[:worker_number]
397
+
384
398
  begin
385
399
  options.delete(:started_workers).each(&:close_pipes)
386
400
 
@@ -1,3 +1,3 @@
1
1
  module Parallel
2
- VERSION = Version = '1.8.0'
2
+ VERSION = Version = '1.9.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-27 00:00:00.000000000 Z
11
+ date: 2016-06-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it