2012-06-20 37 views
1

我對Perl不太熟練,所以我更願意問你。 我不得不推出兩款當代進動,等待他們,我這樣做:Perl並行編程

use Parallel::ForkManager; 

for ($i=0; $i<2; $i++) 
{ 
    $pm->start and next; 
    @args = ("python", "myprogram"); 
    push(@args,split(/ +/, $param)); 
    system(@args) == 0 or die "system @args failed: $?"; 
    $pm->finish; 
} 

$pm->wait_all_children; 

那是正確的或有更好的方法來做到這一點?並行使用system是否正確?

+0

嘗試http://codereview.stackexchange.com/ – ceving

+0

它的確定同時使用'system'和'一段單列。 – raina77ow

回答

1

P :: FM的預期用途是限制孩子的數量,但這對你來說確實很有用。幾個nitpicks:

  1. 您的錯誤報告中有一個小錯誤。具體來說,它可能會給你無用的信息。更改循環

    die "system @args failed: $?"; 
    

    die "system @args failed: ".($? == -1 ? $! : $?)."\n"; 
    
  2. 不用使用過於複雜的C風格。我會改變

    for ($i=0; $i<2; $i++) 
    

    for my $i (0..1) 
    
  3. 它看起來像你試圖解析命令行來避免調用一個shell,當你可以簡單地調用shell。

    @args = ("python", "myprogram"); 
    push(@args,split(/ +/, $param)); 
    system(@args) 
    

    可以寫成

    system("python myprogram $param")