我有一些Python代码可以完全满足我的要求,但是我也需要Perl中的类似功能。
这是我拥有的Python代码:
pool = multiprocessing.Pool()
for item in list:
pool.apply_async(myFunction, args=(item,))
pool.close()
pool.join()
此代码在其自己的进程而不是线程中运行每个函数。同时运行的最大进程数等于逻辑核心数。
python大神给出的解决方案
use Parallel::ForkManager;
my $pm = Parallel::ForkManager->new($MAX_PROCESSES);
foreach my $item (@list) {
$pm->start and next;
my_function($item);
$pm->finish;
}
$pm->wait_all_children;