0

ファイルから読み取った約 60,000 個の文字列の配列から for each ループを実行しています。これらの文字列ごとに、文字列を引数として小さな python ファイルを実行したいと考えています。速度を上げるために、私の計画は、各実行を個別のスレッドとして実行することでした。私は以下を試しましたが、これは各子が完全な foreach ループを実行することを意味しました。

foreach($namesas $name)
{
    pcntl_fork();
    echo ++$count."\n";
    exec("python script.py -argument:".$name);
}

各名前を個別のスレッドとして実行するにはどうすればよいですか? しかし、メインの foreach ループを続行しませんか?

4

2 に答える 2

1

https://stackoverflow.com/a/45966/1964163を参照してください。ただし、本当に pcntl_fork を使用する場合は、その戻り値をチェックして、子プロセスであるかどうかを確認する必要があります。pcntl_fork の PHP ドキュメント ページにサンプル コードがあります。

于 2013-01-10T01:08:17.143 に答える
0

pcntl_fork()お気づきのように、親と同じ実行ポイントにあるスクリプトのコピーを作成します。

次の戻り値を確認することで、このスクリプトが親か子かを確認できますpcntl_fork()

foreach($namesas $name)
{
    $pid = pcntl_fork();
    if(!$pid){
        //We are the child
        echo ++$count."\n";
        exec("python script.py -argument:".$name);
        break;//Jump out of loop in this child. Parent will continue.
    }
}
于 2013-01-10T01:09:28.910 に答える