bri*_*gge 5 perl multiprocessing
我有一个Perl脚本,它会分叉许多子进程.我希望有一些类似的功能,xargs --max-procs=4 --max-args=1或者make -j 4Perl将保持一定数量的进程运行,直到它用完为止.
很容易说fork 4进程并等待它们全部完成,然后再另外四个,但我想保持四个或n个进程同时运行,一完成就分叉一个新进程.
在Perl中有一种简单的方法来实现这样的进程池吗?
mob*_*mob 11
Forks::Super 可以处理这个要求.
use Forks::Super MAX_PROC => 5, ON_BUSY => [ block | queue ];
Run Code Online (Sandbox Code Playgroud)
调用fork()可以阻塞,直到活动子进程数低于5,或者您可以将其他参数传递给fork调用,并且要执行的任务可以排队:
fork { sub => sub { ... task to run in subprocess ... } }
Run Code Online (Sandbox Code Playgroud)
当一个子进程完成时,队列中的另一个作业将启动.
(我是这个模块的作者).
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |