IT源码网

php之一次执行多个命令

yjmyzz 2024年02月27日 程序员 70 0

我正在尝试用 Perl 编写一些东西(但我也很高兴使用 Python 或 PHP 来做同样的事情):

  • 获取列表(例如文件或 URL)

  • 添加额外的系统命令(例如 cp)

  • 在总共一千个命令的列表中最多执行十个这样的命令

  • 等待 10 个槽位之一成为并开始一个新过程,从而遍历 1000 个元素。

我现在正在走捷径,使用反引号来执行 Perl 中的命令,但如果有更好的方法来实现这一点,我将非常感激。

请您参考如下方法:

您应该展示您所写的内容,否则我们无法知道什么可能是“更好的方法”

您或许应该看看 Parallel::ForkManager 。使用该模块,您的程序可能看起来像这样

这段代码缺少很多东西,最重要的是use strictuse warnings 'all',以及@list的声明和填充。我相信你能填空

注意,10个并行进程的限制是模块规定的,"..."必须自己填写作为目标路径。最好在 Perl 中做您需要的事情,而不是仅仅为了调用 cp,所以我参与了 File::Copy相反

use Parallel::ForkManager (); 
use File::Copy 'copy'; 
 
my $pm = Parallel::ForkManager->new(10); 
 
for my $file ( @list ) { 
 
    next if my $pid = $pm->start; 
 
    # Child code 
 
    copy $file, "..."; 
    $pm->finish; 
} 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!