服务器并行运行matlab,可以的Win32 :: OLE并行使用到运行MATLAB的多个实例?(Can Win32::OLE...

这篇博客探讨了在Perl中使用Win32::OLE启动MATLAB多个实例的问题。作者遇到的问题是Win32::OLE在并行环路中启动MATLAB时会报'CoInitialize has not been called'的错误。通过引入并行::Forkmanager和Amro的技巧,成功避免了该错误,实现了隐藏MATLAB窗口并进行并行计算。这种方式允许充分利用CPU资源,实现MATLAB的PARFOR循环并行化处理任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中并行::环路进行测试没有在Win32 :: OLE工作启动Matlab的多个实例,但中并行:: Forkmanager工作原理是利用从Amro的“单”诀窍和线索从http://www.perlmonks.org/bare/ ?NODE_ID = 894058为“的CoInitialize没有被调用”的错误:

前循环使用:

use Win32::OLE; # qw(EVENTS); #Win32::OLE(0.1709) error 0x800401f0: "CoInitialize has not been called"

Win32::OLE->Initialize();

并且循环使用中:

my $ML = Win32::OLE->new('Matlab.Application.single') or die "Cannot start MATLAB";

$ML->{'Visible'}=0;

$ML->Execute('try;cd \''.$wkdir.'\';'.$executable.' '.$file.' '.$countfile.';catch;end;quit;');

只是使用的OLE使用的instesd目的:

system('matlab -automation -wait -r "try;cd \''.$wkdir.'\';'.$executable.' '.$file.' '.$countfile.';catch;end;quit;');

被隐藏Matlab的窗口,我们只是希望它做的工作,但我们得到的荣誉。 使用Perl实现parallellized MATLAB PARFOR影响,我们可以将所有可用的CPU忙于在中并行循环之前分配的任务,并收集/结果这个循环之后结合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值