parallel 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parallel.rb +31 -14
- data/lib/parallel/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c9109c6823e35d9f0dae9d6b525cd210b050801
|
4
|
+
data.tar.gz: 0418fc529365106f7d9915e2c8fb0f223835100d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 228a5ed608242b00fefe9303ff83cd94b5fd35a338f1657c6a6d21d1cedb53a7a205a31abb838addb8ef1763319ca88556a5435204781aa95ed364345db06ee7
|
7
|
+
data.tar.gz: 962275502b4cabd3ddfd3557616e4939520392beae12d665f90d56638f1cd63143a621e6f7e51b2345fd485bfcd4abbe0d3060171ecff9f0626bd75246481768
|
data/lib/parallel.rb
CHANGED
@@ -199,7 +199,7 @@ module Parallel
|
|
199
199
|
class << self
|
200
200
|
def in_threads(options={:count => 2})
|
201
201
|
count, _ = extract_count_from_options(options)
|
202
|
-
Array.new(count)
|
202
|
+
Array.new(count) do |i|
|
203
203
|
Thread.new { yield(i) }
|
204
204
|
end.map!(&:value)
|
205
205
|
end
|
@@ -212,7 +212,16 @@ module Parallel
|
|
212
212
|
|
213
213
|
def each(array, options={}, &block)
|
214
214
|
map(array, options.merge(:preserve_results => false), &block)
|
215
|
-
|
215
|
+
end
|
216
|
+
|
217
|
+
def any?(*args, &block)
|
218
|
+
raise "You must provide a block when calling #any?" if block.nil?
|
219
|
+
!each(*args) { |*args| raise Parallel::Kill if block.call(*args) }
|
220
|
+
end
|
221
|
+
|
222
|
+
def all?(*args, &block)
|
223
|
+
raise "You must provide a block when calling #all?" if block.nil?
|
224
|
+
!!each(*args) { |*args| raise Parallel::Kill unless block.call(*args) }
|
216
225
|
end
|
217
226
|
|
218
227
|
def each_with_index(array, options={}, &block)
|
@@ -244,13 +253,16 @@ module Parallel
|
|
244
253
|
options[:return_results] = (options[:preserve_results] != false || !!options[:finish])
|
245
254
|
add_progress_bar!(job_factory, options)
|
246
255
|
|
247
|
-
if size == 0
|
256
|
+
results = if size == 0
|
248
257
|
work_direct(job_factory, options, &block)
|
249
258
|
elsif method == :in_threads
|
250
259
|
work_in_threads(job_factory, options.merge(:count => size), &block)
|
251
260
|
else
|
252
261
|
work_in_processes(job_factory, options.merge(:count => size), &block)
|
253
262
|
end
|
263
|
+
if results
|
264
|
+
options[:return_results] ? results : source
|
265
|
+
end
|
254
266
|
end
|
255
267
|
|
256
268
|
def map_with_index(array, options={}, &block)
|
@@ -295,13 +307,18 @@ module Parallel
|
|
295
307
|
def work_direct(job_factory, options, &block)
|
296
308
|
self.worker_number = 0
|
297
309
|
results = []
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
310
|
+
exception = nil
|
311
|
+
begin
|
312
|
+
while set = job_factory.next
|
313
|
+
item, index = set
|
314
|
+
results << with_instrumentation(item, index, options) do
|
315
|
+
call_with_index(item, index, options, &block)
|
316
|
+
end
|
302
317
|
end
|
318
|
+
rescue
|
319
|
+
exception = $!
|
303
320
|
end
|
304
|
-
results
|
321
|
+
handle_exception(exception, results)
|
305
322
|
ensure
|
306
323
|
self.worker_number = nil
|
307
324
|
end
|
@@ -322,8 +339,8 @@ module Parallel
|
|
322
339
|
call_with_index(item, index, options, &block)
|
323
340
|
end
|
324
341
|
results_mutex.synchronize { results[index] = result }
|
325
|
-
rescue
|
326
|
-
exception =
|
342
|
+
rescue
|
343
|
+
exception = $!
|
327
344
|
end
|
328
345
|
end
|
329
346
|
end
|
@@ -362,8 +379,8 @@ module Parallel
|
|
362
379
|
worker.work(job_factory.pack(item, index))
|
363
380
|
end
|
364
381
|
results_mutex.synchronize { results[index] = result } # arrays are not threads safe on jRuby
|
365
|
-
rescue
|
366
|
-
exception =
|
382
|
+
rescue
|
383
|
+
exception = $!
|
367
384
|
if Parallel::Kill === exception
|
368
385
|
(workers - [worker]).each do |w|
|
369
386
|
w.thread.kill unless w.thread.nil?
|
@@ -431,8 +448,8 @@ module Parallel
|
|
431
448
|
item, index = job_factory.unpack(data)
|
432
449
|
result = begin
|
433
450
|
call_with_index(item, index, options, &block)
|
434
|
-
rescue
|
435
|
-
ExceptionWrapper.new(
|
451
|
+
rescue
|
452
|
+
ExceptionWrapper.new($!)
|
436
453
|
end
|
437
454
|
Marshal.dump(result, write)
|
438
455
|
end
|
data/lib/parallel/version.rb
CHANGED
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.
|
4
|
+
version: 1.11.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:
|
11
|
+
date: 2017-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|
@@ -40,7 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
40
40
|
version: '0'
|
41
41
|
requirements: []
|
42
42
|
rubyforge_project:
|
43
|
-
rubygems_version: 2.
|
43
|
+
rubygems_version: 2.5.1
|
44
44
|
signing_key:
|
45
45
|
specification_version: 4
|
46
46
|
summary: Run any kind of code in parallel processes
|