我有一个for循环是从一个大约60,000个字符串的数组运行,从一个文件中读取 对于这些字符串中的每一个,我想运行一个以字符串作为参数的小python文件。 为了加快速度,我的计划是将每个执行作为一个单独的线程运行。 我尝试了以下但这意味着每个孩子都进行了完整的foreach循环。
foreach($namesas $name)
{
pcntl_fork();
echo ++$count."\n";
exec("python script.py -argument:".$name);
}
如何让每个名称作为单独的线程运行?但是没有继续主要的foreach循环?
答案 0 :(得分:1)
请参阅https://stackoverflow.com/a/45966/1964163 - 但如果您真的想使用pcntl_fork,则需要检查其返回值以查看您是否是子进程。 pcntl_fork的PHP文档页面上有示例代码。
答案 1 :(得分: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.
}
}