ovn*_*tar 0 perl multithreading
是否有任何限制并行运行线程的选项.在示例中,我有以下代码:
use threads;
use LWP::UserAgent qw( );
my $ua = LWP::UserAgent->new();
my @threads;
# if @threads < 200
for my $url (@URL_LIST) {
push @threads, async { $ua->get($url) };
}
# if @threads <= 200
for my $thread (@threads) {
my $response = $thread->join;
...
}
Run Code Online (Sandbox Code Playgroud)
如果@URL_LIST包含超过10000个网址,我正在尝试创建脚本以仅执行200个并行请求!但不幸的是,脚本最终得到的信息是20多个线程未完成.任何想法解决方案应该是什么?
您可能应该生成一定数量的工作线程,从而从Thread :: Queue对象中提取URL并将结果转储到另一个此类队列中,而不是生成一个线程来处理每个URL.当URL队列清空时,工作线程可以自行结束,并且您将继续处理结果队列...