多进程的内存问题
时间:2010-08-29
来源:互联网
代码是要实现批量的抓取网页,由于数量太多,考虑到多进程,可是运行就提示内存不能为read,该怎么写这种多进程的脚本呢?
还有采用多线程不知能否实现,本人尝试多线程时,线程执行时并没有提交cookies。
复制代码
还有采用多线程不知能否实现,本人尝试多线程时,线程执行时并没有提交cookies。
- use LWP::UserAgent;
- use HTTP::Cookies;
- use LWP::ConnCache;
- use strict;
- my $ua=LWP::UserAgent->new;
- my $cache=LWP::ConnCache->new();
- $ua->conn_cache($cache);
- my $user="yongchun_wsu";
- my $password="trial01";
- my $url="https://portal.biobase-international.com/cgi-bin/portal/login.cgi";
-
- my $cookie=HTTP::Cookies->new(file=>'lwp_cookie.dat',autosave=>1,ignore_discard=>1);
- $ua->cookie_jar($cookie);
-
- my $res=$ua->post("$url",[login=>"$user",
- password=>"$password"]) or die "can't login $!";
- print "login successed !\n";
-
- for(my $count=1;$count<10;$count++){
- my $c=fork();
- if($c){
- print "parent running \n";
- }
- else
- {
- &getpage();
- exit 0;
- }
- }
-
- sub getpage {
- my $url1="https://portal.biobase-international.com/cgi-bin/build_t/idb/1.0/pageview.cgi?view=MatrixReport&matrix_acc=M0";
- for(my $i=1;$i<1357;$i++){
- my $id=sprintf("%04d",$i);
- if(! -e "M0".$id.".html"){
- my $bro=$ua->get($url1.$id);
- if($bro->is_success){
- open(FH,">","M0".$id.".html");
- print FH $bro->content;
- print "page M0$id".".html finished\n";
- close(FH);
-
- }
- else
- {
- print "can't get page $id";
- redo;
- }
- }
- }
- }
作者: heut2009 发布时间: 2010-08-29
有一个帖子··可以看一下·
http://bbs.chinaunix.net/viewthread.php?tid=1722536
http://bbs.chinaunix.net/viewthread.php?tid=1722536
作者: wfnh 发布时间: 2010-08-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28