linux – 如何修改perl脚本以使用多个处理器?

linux – 如何修改perl脚本以使用多个处理器?,第1张

概述嗨,我有一个简单的脚本,它接受一个文件,并在其上运行另一个Perl脚本.该脚本对当前文件夹中的每个图片文件执行此操作.这是在一台配备2个四核Xeon处理器,16GB内存,运行RedHat Linux的机器上运行的. 第一个脚本work.pl基本上调用magicplate.pl传递一些参数和magicplate.pl文件的名称来处理. Magic Plate需要大约一分钟来处理每个图像.因为work 嗨,我有一个简单的脚本,它接受一个文件,并在其上运行另一个Perl脚本.该脚本对当前文件夹中的每个图片文件执行此操作.这是在一台配备2个四核Xeon处理器,16GB内存,运行RedHat Linux的机器上运行的.

第一个脚本work.pl基本上调用magicplate.pl传递一些参数和magicplate.pl文件的名称来处理. Magic Plate需要大约一分钟来处理每个图像.因为work.pl正在执行相同的功能超过100次,并且因为系统有多个处理器和核心,所以我正在考虑将任务拆分,以便它可以并行运行多次.如有必要,我可以将图像分割到不同的文件夹.任何帮助都会很棒.谢谢

这是我到目前为止:

use strict;use warnings;my @initialimages = <*>;foreach my $file (@initialimages) {    if($file =~ /.png/){        print "processing $file...\n";        my @tmp=split(/\./,$file);        my $name="";        for(my $i=0;$i<(@tmp-1);$i++) {            if($name eq "") { $name = $tmp[$i]; } else { $name=$name.".".$tmp[$i];}        }        my $exten=$tmp[(@tmp-1)];        my $orig=$name.".".$exten;        system("perl magicPlate.pl -i ".$orig." -min 4 -max 160 -d 1");     }}
解决方法 您可以使用Parallel :: ForkManager(将$MAX_PROCESSES设置为同时处理的文件数):
use Parallel::ForkManager;use strict;use warnings;my @initialimages = <*>;foreach my $file (@initialimages) {    if($file =~ /.png/){        print "processing $file...\n";        my @tmp=split(/\./,$file);        my $name="";        for(my $i=0;$i<(@tmp-1);$i++) {            if($name eq "") { $name = $tmp[$i]; } else { $name=$name.".".$tmp[$i];}        }        my $exten=$tmp[(@tmp-1)];        my $orig=$name.".".$exten;  $pm = new Parallel::ForkManager($MAX_PROCESSES);    my $pID = $pm->start and next;        system("perl magicPlate.pl -i ".$orig." -min 4 -max 160 -d 1");    $pm->finish; # Terminates the child process     }}

但正如Hugmeir所建议的那样,为每个新文件一次又一次地运行perl解释器并不是一个好主意.

总结

以上是内存溢出为你收集整理的linux – 如何修改perl脚本以使用多个处理器?全部内容,希望文章能够帮你解决linux – 如何修改perl脚本以使用多个处理器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/yw/1047990.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存