Perl相当于Python中的工作池

jks*_*snw 2 python perl multiprocessing

我有一些Python代码完全符合我的要求,但我也需要在Perl中使用类似的东西.

这是我的Python代码:

pool = multiprocessing.Pool()
for item in list:
    pool.apply_async(myFunction, args=(item,))
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)

此代码在其自己的进程而不是线程中运行每个函数.同时运行的最大进程数等于逻辑核的数量.

yst*_*sth 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;
Run Code Online (Sandbox Code Playgroud)