concurrent_worker 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7bbf275fc411dcc5f7b7466182cdcaed808885776b048dddf360b9c488005a92
4
- data.tar.gz: 7becd02f4c42aa127d73b41ac1c8c49e699f6b879108eb6fa1c49685b9feb83f
3
+ metadata.gz: 7800e859a8467ccbb2980cff86f3213b4d4c945f4452acc5fa964551003438b0
4
+ data.tar.gz: eecb1fac2fb3cf9769040ee7de854eeb8203e72a615539f6adc77e636b557f08
5
5
  SHA512:
6
- metadata.gz: 98df459e0b0fb82dc97b22f989102b070106ff190c9403536dbd88dc0b0805882a1862d8c1293adce234d9bc22269814ad0391a2a3eb416a12b9ff4309568bb6
7
- data.tar.gz: ca1551583e4956b91900b245920d13fd8a938caf2475c2cb19912f6d2982a9211ad6ddd5b2b9dddb32981cdfc748bdbf7a3deac3e8ee33628fa4c0f15a60b290
6
+ metadata.gz: c73661e8942dcf02aa5d713cddace082e7fc4eaf75c3d844ca74fa58d0dea93c3c893b4d41065893fb6c85d2f32c93d0f9f30dd892bdba6d04d9bfab76808b0f
7
+ data.tar.gz: 4fb57e9d3445dc0cf93836ceef3b7d52d4df669e855b18c2a498f77a3565bcc288289cea88945b404b526e147e20a92b5657084c6dc764f64d71497e9c111c2e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- concurrent_worker (0.1.2)
4
+ concurrent_worker (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # ConcurrentWorker
2
2
 
3
-
3
+ Concurrent worker in thread/process with preparation structure.
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
7
+ Add this line to your application's Gemfile.
8
8
 
9
9
  ```ruby
10
10
  gem 'concurrent_worker'
@@ -42,51 +42,49 @@ logger.req("thread%d n=%d\n",0, 1)
42
42
  logger.join
43
43
  ```
44
44
 
45
- If you need some preparation for the worker block, you can define 'base block':
45
+ If you need some preparation for the worker block, you can define 'base block'.
46
46
 
47
47
  ```ruby
48
48
  logger = ConcurrentWorker::Worker.new do |args|
49
- # share object with 'base block' by instance variable(@xxx).
49
+ # worker block and base block can share object with instance variable(@xxx).
50
50
  printf(@file, *args)
51
51
  @file.flush
52
52
  nil
53
53
  end
54
54
 
55
- # define 'base block' for some preparation of 'work block'.
55
+ # define base block for some preparation of work block.
56
56
  logger.set_block(:base_block) do
57
57
  open( "log.txt" , "w" ) do |file|
58
58
  @file = file
59
- # 'yield_loop_block' must be called in 'base block'.
60
- # 'work block' will be called in this call.
59
+ # 'yield_loop_block' must be called in base block.
60
+ # work block will be called in this call.
61
61
  yield_loop_block
62
62
  end
63
63
  end
64
64
  ...
65
65
  ```
66
66
 
67
- The 'work blick' and 'base block' are executed in a worker's instance scope, in a same thread, so that they can share object with the worker's instance variable.
67
+ The work block and base block are executed in a same thread, and in a worker's instance scope so that they can share object with the worker's instance variable.
68
68
 
69
69
  ### WorkerPool
70
70
  You can exec work block in some process concurrently.
71
71
 
72
72
  ```ruby
73
73
  #define a pool of 8 workers , executed in other process.
74
- pw = ConcurrentWorker::WorkerPool.new(type: :process, pool_max: 8) do
75
- |n|
74
+ wp = ConcurrentWorker::WorkerPool.new(type: :process, pool_max: 8) do |n|
76
75
  [n , n.times.inject(:+)]
77
76
  end
78
77
 
79
78
  # you can receive the result of work block with callback block.
80
- pw.add_callback do |n, result|
79
+ wp.add_callback do |n, result|
81
80
  logger.log( "n=%d,result=%d", n, result)
82
81
  end
83
82
 
84
83
  (10000000..10000200).each do |n|
85
- pw.req(n)
84
+ wp.req(n)
86
85
  end
87
86
 
88
- pw.join
89
-
87
+ wp.join
90
88
  ```
91
89
 
92
90
  Worker uses `Marshal::dump/load` to transport ruby object to other process. So, request arguments and result objects must be able to be Marshal dumped.
@@ -100,7 +98,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
100
98
 
101
99
  ## Contributing
102
100
 
103
- Bug reports and pull requests are welcome on GitHub at https://github.com/murjp/concurrent_worker.
101
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dddogdiamond/concurrent_worker.
104
102
 
105
103
  ## License
106
104
 
@@ -6,11 +6,11 @@ require "concurrent_worker/version"
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "concurrent_worker"
8
8
  spec.version = ConcurrentWorker::VERSION
9
- spec.authors = ["mur"]
10
- spec.email = ["mur@mur.jp"]
9
+ spec.authors = ["dddogdiamond"]
10
+ spec.email = ["dddogdiamond@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Concurrent worker in thread/process with preparation structure.}
13
- spec.description = %q{I will write later...}
13
+ spec.description = %q{Concurrent worker in thread/process with preparation structure.}
14
14
  spec.homepage = "https://github.com/dddogdiamond/concurrent_worker"
15
15
  spec.license = "MIT"
16
16
 
@@ -1,3 +1,3 @@
1
1
  module ConcurrentWorker
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent_worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
- - mur
7
+ - dddogdiamond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-03 00:00:00.000000000 Z
11
+ date: 2019-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,9 +52,9 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
- description: I will write later...
55
+ description: Concurrent worker in thread/process with preparation structure.
56
56
  email:
57
- - mur@mur.jp
57
+ - dddogdiamond@gmail.com
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
@@ -65,7 +65,6 @@ files:
65
65
  - Gemfile.lock
66
66
  - LICENSE.txt
67
67
  - README.md
68
- - README.md.backup
69
68
  - Rakefile
70
69
  - bin/console
71
70
  - bin/setup
data/README.md.backup DELETED
@@ -1,107 +0,0 @@
1
- # ConcurrentWorker
2
-
3
-
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'concurrent_worker'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
- $ gem install concurrent_worker
20
-
21
- ## Usage
22
-
23
- ### Worker
24
-
25
- You can define worker block executed in other thread, and send request for the worker.
26
-
27
- ```ruby
28
- require 'concurrent_worker'
29
- Thread.abort_on_exception = true
30
-
31
- # define a work block.
32
- logger = ConcurrentWorker::Worker.new do |args|
33
- printf(*args)
34
- $stdout.flush
35
- nil
36
- end
37
-
38
- ...
39
- # call work block asynchronously with 'req' method.
40
- logger.req("thread%d n=%d\n",0, 1)
41
-
42
- logger.join
43
- ```
44
-
45
- If you want to write log in a file, you can define 'base block':
46
-
47
- ```ruby
48
- logger = ConcurrentWorker::Worker.new do |args|
49
- # share object with 'base block' by instance variable(@xxx).
50
- printf(@file, *args)
51
- @file.flush
52
- nil
53
- end
54
-
55
- # define 'base block' for some preparation of 'work block'.
56
- logger.set_block(:base_block) do
57
- open( "log.txt" , "w" ) do |file|
58
- @file = file
59
- # 'yield_loop_block' must be called in 'base block'.
60
- # 'work block' will be called in this call.
61
- yield_loop_block
62
- end
63
- end
64
- ...
65
- ```
66
-
67
- The 'work blick' and 'base block' are executed in a worker's instance scope, in a same thread, so that they can share object with the worker's instance variable.
68
-
69
- ### WorkerPool
70
- You can exec work block in some process concurrently.
71
-
72
- ```ruby
73
- #define a pool of 8 workers , executed in other process.
74
- pw = ConcurrentWorker::WorkerPool.new(type: :process, pool_max: 8) do
75
- |n|
76
- [n , n.times.inject(:+)]
77
- end
78
-
79
- # you can receive the result of work block with callback block.
80
- pw.add_callback do |n, result|
81
- logger.log( "n=%d,result=%d", n, result)
82
- end
83
-
84
- (10000000..10000200).each do |n|
85
- pw.req(n)
86
- end
87
-
88
- pw.join
89
-
90
- ```
91
-
92
- Worker uses `Marshal::dump/load` to transport ruby object to other process. So, request arguments and result objects must be able to be Marshal dumped.
93
-
94
-
95
- ## Development
96
-
97
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
98
-
99
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
100
-
101
- ## Contributing
102
-
103
- Bug reports and pull requests are welcome on GitHub at https://github.com/murjp/concurrent_worker.
104
-
105
- ## License
106
-
107
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).