
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
すでに書かれていますが、forkは、プロセスを生成するので、マルチプロセス処理になります。
なので、Parallel::ForkManager で(たとえば)10並列にした場合と、perlコマンドをシェルから10個パラレルに起動した場合とでは、ほぼ同じ処理になります。
No.3
- 回答日時:
>perlでバッチ処理を書いています。
ループ処理に時間がかかるのでParallel::ForkManagerというモジュールを使いマルチスレッド化しています。Parallel::ForkManagerはマルチプロセスを制御するモジュールであってマルチスレッドではないと思いますが。perldoc読んでもプロセスは出てきますがスレッドは出てきませんし。
>ふと思ったのですが、マルチスレッドにせず、単純にこのperlのスクリプトを同じタイミングで複数起動するだけでもマルチスレッド並に速度は向上するのでしょうか?
なので、この場合、起動手順が面倒になるだけで速度は向上しないです。
No.2
- 回答日時:
マルチスレッドは同一プロセス内にあるため、
特別な配慮無しに資源(メモリやオブジェクト)を
共有できます。従って、同期を取ることも比較的
簡単にできます。
マルチプロセスではプロセス空間が異なるため、
資源の共有には特別な処置が必要になります。
また、プロセス固有のメモリ領域が必要なので、
マルチスレッドよりシステムの負荷がかかります。
マシンスペックによって、これが重いか、軽いかの
違いがありますので、ハイスペックのものならば
使用上の差異が殆ど感じられないと思います。
No.1
- 回答日時:
>>マルチスレッドにせず、単純にこのperlのスクリプトを同じタイミングで複数起動するだけでもマルチスレッド並に速度は向上するのでしょうか?
一般論的には、マルチスレッドのほうがマルチプロセスよりも負荷が軽く、速いといわれていますので、速度が向上することは無いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AIX6でファイルのタイムスタン...
-
「デバイスは PRN を初期化でき...
-
Excel VBA 定義されたプロージ...
-
CGI.pmはもう古い!?
-
Excel VBAで、ユーザーフォー...
-
エクセルVBAでシートモジュール...
-
VBAを使用してWordからExcelの...
-
吉里吉里で条件分岐が上手くい...
-
VBAでoutlook365が起動しません。
-
ランダムな単語を得るAPIってあ...
-
Form間の値の渡し方
-
LCD ディスプレイを Raspberry ...
-
Excel VBAで、ユーザーフォーム...
-
perlの構文でカンマの意味が分...
-
Access VBA標準モジュールにつ...
-
perl で 64ビットint を扱うには?
-
シートモジュールで使う変数を...
-
実行時パラメータを使用するとE...
-
perlで変数をunix時間から時刻...
-
Image::Magickのインストールに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AIX6でファイルのタイムスタン...
-
gem install houston
-
bash と Perl
-
cookie 認証をなんとかする方法
-
LinuxにおいてのPerlのプログラ...
-
スクリプトについて教えてくだ...
-
実行中のcpan processを終了さ...
-
perlスクリプト内でシェルコマ...
-
Perlで特定のコマンドを実行さ...
-
Linuxでforkやalarm,wait,waitp...
-
時間がかかり過ぎたプロセスを...
-
並列処理について
-
マルチスレッドとマルチプロセ...
-
forkで作れる子プロセス数が限...
-
Epoch time
-
Perlの処理待ちコマンド
-
common lispのコード
-
my $pid = open PIPE, "-|";の...
-
`ls`標準出力はどこにいった?
-
バックグラウンドで走らせたプ...
おすすめ情報