parallel 1.16.1 → 1.19.1
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 +4 -4
- data/lib/parallel/processor_count.rb +3 -5
- data/lib/parallel/version.rb +1 -1
- data/lib/parallel.rb +21 -11
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da9740ffe51b7c2867eb4a51b9477aa0195c475ba27342793a3a6f7aa209b9ab
|
4
|
+
data.tar.gz: cc98ae0e7c35557d064abf720263258a0340c30ec405d30342636f1667fc32c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c71c1888523f4d9ed6c3050c8c06d425330d955c5bc30be331f93a46b346984b489ba78ded574bb7197a3c9ac34076924e90d21765085d6fdfc5dce1d0ef27f
|
7
|
+
data.tar.gz: 458976b6feaf2e34201ffb06a855940581eafe97306c638ccb2e583f8ed975a174a56e482a84e7d6a2c2a806ee94cf23adf66d43fc48b133433d275fea872d58
|
@@ -1,16 +1,14 @@
|
|
1
1
|
require 'etc'
|
2
2
|
|
3
3
|
module Parallel
|
4
|
+
# TODO: inline this method into parallel.rb and kill physical_processor_count in next major release
|
4
5
|
module ProcessorCount
|
5
|
-
# Number of processors seen by the OS
|
6
|
+
# Number of processors seen by the OS, used for process scheduling
|
6
7
|
def processor_count
|
7
|
-
@processor_count ||=
|
8
|
-
Etc.nprocessors
|
9
|
-
end
|
8
|
+
@processor_count ||= Integer(ENV['PARALLEL_PROCESSOR_COUNT'] || Etc.nprocessors)
|
10
9
|
end
|
11
10
|
|
12
11
|
# Number of physical processor cores on the current system.
|
13
|
-
#
|
14
12
|
def physical_processor_count
|
15
13
|
@physical_processor_count ||= begin
|
16
14
|
ppc = case RbConfig::CONFIG["target_os"]
|
data/lib/parallel/version.rb
CHANGED
data/lib/parallel.rb
CHANGED
@@ -44,10 +44,9 @@ module Parallel
|
|
44
44
|
|
45
45
|
class Worker
|
46
46
|
attr_reader :pid, :read, :write
|
47
|
-
attr_accessor :thread
|
47
|
+
attr_accessor :thread
|
48
48
|
def initialize(read, write, pid)
|
49
49
|
@read, @write, @pid = read, write, pid
|
50
|
-
@lap = 0
|
51
50
|
end
|
52
51
|
|
53
52
|
def stop
|
@@ -202,13 +201,20 @@ module Parallel
|
|
202
201
|
|
203
202
|
class << self
|
204
203
|
def in_threads(options={:count => 2})
|
205
|
-
|
206
|
-
|
207
|
-
|
204
|
+
Thread.handle_interrupt(Exception => :never) do
|
205
|
+
begin
|
206
|
+
threads = []
|
207
|
+
count, _ = extract_count_from_options(options)
|
208
|
+
count.times do |i|
|
209
|
+
threads << Thread.new { yield(i) }
|
210
|
+
end
|
211
|
+
Thread.handle_interrupt(Exception => :immediate) do
|
212
|
+
threads.map(&:value)
|
213
|
+
end
|
214
|
+
ensure
|
215
|
+
threads.each(&:kill)
|
216
|
+
end
|
208
217
|
end
|
209
|
-
threads.map(&:value)
|
210
|
-
ensure
|
211
|
-
threads.each(&:kill)
|
212
218
|
end
|
213
219
|
|
214
220
|
def in_processes(options = {}, &block)
|
@@ -373,6 +379,7 @@ module Parallel
|
|
373
379
|
in_threads(options) do |i|
|
374
380
|
worker = workers[i]
|
375
381
|
worker.thread = Thread.current
|
382
|
+
worked = false
|
376
383
|
|
377
384
|
begin
|
378
385
|
loop do
|
@@ -381,8 +388,8 @@ module Parallel
|
|
381
388
|
break unless index
|
382
389
|
|
383
390
|
if options[:isolation]
|
384
|
-
worker = replace_worker(job_factory, workers, i, options, blk) if
|
385
|
-
|
391
|
+
worker = replace_worker(job_factory, workers, i, options, blk) if worked
|
392
|
+
worked = true
|
386
393
|
worker.thread = Thread.current
|
387
394
|
end
|
388
395
|
|
@@ -462,7 +469,10 @@ module Parallel
|
|
462
469
|
item, index = job_factory.unpack(data)
|
463
470
|
result = begin
|
464
471
|
call_with_index(item, index, options, &block)
|
465
|
-
|
472
|
+
# https://github.com/rspec/rspec-support/blob/673133cdd13b17077b3d88ece8d7380821f8d7dc/lib/rspec/support.rb#L132-L140
|
473
|
+
rescue NoMemoryError, SignalException, Interrupt, SystemExit
|
474
|
+
raise $!
|
475
|
+
rescue Exception
|
466
476
|
ExceptionWrapper.new($!)
|
467
477
|
end
|
468
478
|
begin
|
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.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|
@@ -23,7 +23,11 @@ files:
|
|
23
23
|
homepage: https://github.com/grosser/parallel
|
24
24
|
licenses:
|
25
25
|
- MIT
|
26
|
-
metadata:
|
26
|
+
metadata:
|
27
|
+
bug_tracker_uri: https://github.com/grosser/parallel/issues
|
28
|
+
documentation_uri: https://github.com/grosser/parallel/blob/v1.19.1/Readme.md
|
29
|
+
source_code_uri: https://github.com/grosser/parallel/tree/v1.19.1
|
30
|
+
wiki_uri: https://github.com/grosser/parallel/wiki
|
27
31
|
post_install_message:
|
28
32
|
rdoc_options: []
|
29
33
|
require_paths:
|
@@ -39,8 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
39
43
|
- !ruby/object:Gem::Version
|
40
44
|
version: '0'
|
41
45
|
requirements: []
|
42
|
-
|
43
|
-
rubygems_version: 2.7.6
|
46
|
+
rubygems_version: 3.0.3
|
44
47
|
signing_key:
|
45
48
|
specification_version: 4
|
46
49
|
summary: Run any kind of code in parallel processes
|