質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

2484閲覧

Rubyのparallelで並列処理が出来ていない

d04062

総合スコア111

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/08/01 05:37

編集2020/08/01 05:38

Rubyのparallelを使用していますが、並列処理が出来ていないようなのです。

◆コード
require 'parallel'
result = Parallel.map(1..10) do |item|
p [item ** 2, Parallel.worker_number]
end
p result

◆出力結果
[1, 0]
[4, 0]
[9, 0]
[16, 0]
[25, 0]
[36, 0]
[49, 0]
[64, 0]
[81, 0]
[100, 0]
[[1, 0], [4, 0], [9, 0], [16, 0], [25, 0], [36, 0], [49, 0], [64, 0], [81, 0], [100, 0]]

参考にしたサイト
https://www.xmisao.com/2018/07/22/how-to-use-ruby-parallel-gem.html

ワーカーナンバーは、何度実行しても「0」のみ(並列ではない)で、
計算が軽量すぎるためかと思い、重い処理をしても同じでした。

出力結果も、本来はたまにはバラツキがあるはずなのですが、
まったく同じで順番通りでした。

他に、どの辺りは、確認をしたら良いでしょうか?
アドバイスをお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Parallel では並列数のデフォルトはシステムのCPU数になります。おそらく実行している環境が 1CPU のシステムなのでしょう。

1CPU の環境でも以下のようにすれば並列数を上げて実行させることができます。

環境変数 PARALLEL_PROCESSOR_COUNT で指定する

README.md に以下の説明があります。

[Process count via ENV] PARALLEL_PROCESSOR_COUNT=16 will use 16 instead of the number of processors detected. This is used to reconfigure a tool using parallel without inserting custom logic.

in_processes/in_threads で都度指定する

ruby

1require 'parallel' 2result = Parallel.map(1..10, in_processes: 10) do |item| 3p [item ** 2, Parallel.worker_number] 4end 5p result

とすれば、実行結果は

shell

1[1, 0] 2[4, 1] 3[16, 3] 4[9, 2] 5[36, 5] 6[25, 4] 7[64, 7] 8[49, 6] 9[81, 9] 10[100, 8] 11[[1, 0], [4, 1], [9, 2], [16, 3], [25, 4], [36, 5], [49, 6], [64, 7], [81, 9], [100, 8]]

となります。

投稿2020/08/02 11:25

saoyagi2

総合スコア210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d04062

2020/08/11 12:34

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問