我正在尝试用Perl写一些东西(但我也很高兴使用Python或PHP来做同样的事情):
列出一个列表(例如,文件或URL)
添加额外的系统命令(例如cp
)
在总共一千个列表中执行最多十个这些命令
等待十个插槽中的一个进入并启动一个新程序,从而移动1000个元素。
我现在正在进行短切并使用后退标记来执行Perl中的命令,但如果有更好的方法来实现这一点,我真的很感激。
答案 0 :(得分:1)
你应该展示你所写的内容,否则我们无法知道什么是更好的方式"
你应该看看Parallel::ForkManager。使用该模块,您的程序可能看起来像这样
此代码中缺少很多内容,最重要的是use strict
和use 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;
}