0

我有一个 for each 循环是从一个大约 60,000 个字符串的数组中运行的,该数组是从一个文件中读取的。对于这些字符串中的每一个,我想运行一个以字符串作为参数的小型 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 回答