一次执行几个命令

时间:2016-07-08 10:30:22

标签: php python linux perl

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

  • 列出一个列表(例如,文件或URL)

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

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

  • 等待十个插槽中的一个进入并启动一个新程序,从而移动1000个元素。

我现在正在进行短切并使用后退标记来执行Perl中的命令,但如果有更好的方法来实现这一点,我真的很感激。

1 个答案:

答案 0 :(得分:1)

你应该展示你所写的内容,否则我们无法知道什么是更好的方式"

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

此代码中缺少很多内容,最重要的是use strictuse warnings 'all',以及@list的声明和人口。我相信你可以填补空白

请注意,模块强加了对十个并行进程的限制,并且"..."必须由您自己填写为目标路径。总是最好在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;
}