我有一些Python代码完全符合我的要求,但我也需要在Perl中使用类似的东西。
这是我的Python代码:
pool = multiprocessing.Pool()
for item in list:
pool.apply_async(myFunction, args=(item,))
pool.close()
pool.join()
此代码在其自己的进程而不是线程中运行每个函数。同时运行的最大进程数等于逻辑核的数量。
答案 0 :(得分:5)
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;