coro学习1 -并行抓网页

折腾了很久的stackless python和greenlet,

突然想到,难道万能的perl就没有协程的实现吗?

众里寻他千百度,

度娘了一下,还真有,就是 Coro - the only real threads in perl

T_T,我怎么能忘了CPAN呢。

coro基本提供了和stackless一样的功能。

同一个作者还提供了libEV,anyevent模块来支持异步的事件接口。

先看看anyevent:HTTP抓网页的coro版实现

少了cv.少了回调函数。

只是多了async

非常简洁

 

use Coro;
use AnyEvent::HTTP;

#my $url = 'http://www.baidu.com/s?wd=1';
my $url = 'http://www.baidu.com';
my $cocurrent = 5;    # 并发数

my @coro;

foreach my $i (1..$cocurrent){
    push @coro, async {
                #print "start $i\n";
                http_get $url, cb => Coro::rouse_cb;
                my ($content, $hdr) = Coro::rouse_wait;
                print "end $i($hdr->{Status})\n";
        };
};



foreach (@coro) {
        print "joining\n";
        $_->join;
        print "joined\n";
};


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值