使用Perl XML :: Twig处理程序对内存处理大文件的效率低下
我偶尔需要从大型
XML数据库导出中提取数据.文件大小介于600到700 MB之间.经过几天的研究,我得出结论,XML :: Twig是可行的方法,因为它的处理程序允许我逐块处理文件.
我按照这些例子,经过几个小时的试验和错误,我写了Perl代码,完成了我需要做的工作.代码工作,它提取了我想要的数据并计算了我需要的细节.但是在运行脚本时(花了大约15分钟来处理620MB的XML)我在Activity Monitor中注意到,到最后,内存使用量会迅速增加到不合理的高水平. 我删除了处理我感兴趣的XML标记的Perl代码,并用一条指令替换它来增加一个变量,简单地计算找到了多少个产品元素.内存使用情况类似.首先正常,然后朝最后的几个元素开始迅速增加并吃掉我拥有的一切. 我添加了一些代码来监视时间,处理的项目数以及Perl进程使用的内存量.此代码显示在此处: #!/usr/bin/perl use strict; use utf8; use XML::Twig; binmode STDOUT,":encoding(UTF-8)"; binmode STDERR,":encoding(UTF-8)"; my $my_processID = $$; my ($xml_file_name,$second_arg) = @ARGV; unless (defined($xml_file_name)) { die "Please provide XML filename as 1st argument."; } my $product_counter = 0; my @shell_command_output_text; my $resource_usage_status; my $reference_timestamp; my $datetimeNow; my $t = XML::Twig->new( twig_handlers => { 'product' => &;do_what_needs_to_be_done_with_each_product },pretty_print => 'indented' ); $reference_timestamp = time(); $t->parsefile( $xml_file_name,ErrorContext => 2 ); print "(Parse finished)n"; showstatus(); $t->purge; print "(Purge finished)n"; showstatus(); print "nJOB COMPLETE.n$product_counter items processed.n"; exit 0; sub do_what_needs_to_be_done_with_each_product() { my( $twig,$product)= @_; $product_counter++; ## Display status every 5 seconds: if ( ( time()-$reference_timestamp ) > 5 ) { showstatus(); $reference_timestamp = time(); } $twig->purge; } ## end-sub sub showstatus() { @shell_command_output_text = `top -l 1 -pid $my_processID -stats pid,command,cpu,mem`; ## I only need the last line of that output. $resource_usage_status = $shell_command_output_text[$#shell_command_output_text]; $datetimeNow = localtime(); chomp $resource_usage_status; print "Res: $resource_usage_status -> item count: $product_counter <- time: $datetimeNown"; } ## end-sub 以下是我运行上述脚本时屏幕上显示的内容. keve@deimos:DATA$./twigExample.pl product_db_extract.xml Res: 3237 perl5.18 0.0 12M+ -> item count: 3086 <- time: Sat Nov 18 23:45:48 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 6521 <- time: Sat Nov 18 23:45:55 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 9909 <- time: Sat Nov 18 23:46:02 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 12751 <- time: Sat Nov 18 23:46:09 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 15570 <- time: Sat Nov 18 23:46:16 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 18151 <- time: Sat Nov 18 23:46:23 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 20828 <- time: Sat Nov 18 23:46:30 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 23561 <- time: Sat Nov 18 23:46:37 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 26230 <- time: Sat Nov 18 23:46:44 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 28861 <- time: Sat Nov 18 23:46:51 2017 Res: 3237 perl5.18 0.0 12M+ -> item count: 31665 <- time: Sat Nov 18 23:46:58 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 34443 <- time: Sat Nov 18 23:47:05 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 36952 <- time: Sat Nov 18 23:47:12 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 39461 <- time: Sat Nov 18 23:47:19 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 42113 <- time: Sat Nov 18 23:47:26 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 44794 <- time: Sat Nov 18 23:47:33 2017 Res: 3237 perl5.18 0.0 13M+ -> item count: 47510 <- time: Sat Nov 18 23:47:40 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 50154 <- time: Sat Nov 18 23:47:47 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 52869 <- time: Sat Nov 18 23:47:54 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 55497 <- time: Sat Nov 18 23:48:01 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 57725 <- time: Sat Nov 18 23:48:08 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 59754 <- time: Sat Nov 18 23:48:15 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 61600 <- time: Sat Nov 18 23:48:22 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 63244 <- time: Sat Nov 18 23:48:29 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 64801 <- time: Sat Nov 18 23:48:36 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 66448 <- time: Sat Nov 18 23:48:43 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 68022 <- time: Sat Nov 18 23:48:50 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 69561 <- time: Sat Nov 18 23:48:57 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 71180 <- time: Sat Nov 18 23:49:04 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 73009 <- time: Sat Nov 18 23:49:11 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 75259 <- time: Sat Nov 18 23:49:18 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 77331 <- time: Sat Nov 18 23:49:25 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 79344 <- time: Sat Nov 18 23:49:32 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 81389 <- time: Sat Nov 18 23:49:39 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 83345 <- time: Sat Nov 18 23:49:46 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 85346 <- time: Sat Nov 18 23:49:53 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 87350 <- time: Sat Nov 18 23:50:00 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 89359 <- time: Sat Nov 18 23:50:07 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 91374 <- time: Sat Nov 18 23:50:14 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 93451 <- time: Sat Nov 18 23:50:21 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 95542 <- time: Sat Nov 18 23:50:28 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 97635 <- time: Sat Nov 18 23:50:35 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 99764 <- time: Sat Nov 18 23:50:42 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 101914 <- time: Sat Nov 18 23:50:49 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 103896 <- time: Sat Nov 18 23:50:56 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 105982 <- time: Sat Nov 18 23:51:03 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 108023 <- time: Sat Nov 18 23:51:10 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 110090 <- time: Sat Nov 18 23:51:17 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 112033 <- time: Sat Nov 18 23:51:24 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 114039 <- time: Sat Nov 18 23:51:31 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 116038 <- time: Sat Nov 18 23:51:38 2017 Res: 3237 perl5.18 0.0 15M+ -> item count: 118031 <- time: Sat Nov 18 23:51:45 2017 (Parse finished) Res: 3237 perl5.18 0.0 3780M+ -> item count: 119335 <- time: Sat Nov 18 23:54:21 2017 (Purge finished) Res: 3237 perl5.18 0.0 2634M+ -> item count: 119335 <- time: Sat Nov 18 23:54:27 2017 JOB COMPLETE. 119335 items processed. keve@deimos:DATA$ 注意打印“Parse finished”的3分钟间隙. 我希望看到最后几个产品标签的内存使用量增加,就像我在Activity Monitor中看到的那样.但打印到最后一个产品标签的内存使用量是完全可以接受的15 MB.这个输出中没有显示棘手的部分:只有缺少的3分钟时间和3780M表示在最终产品标签之后发生了奇怪的事情. 所以我编写了一个shell脚本,以便在最后的3分钟内跟踪内存使用情况.以下是我在单独的窗口中运行的内容,而perl脚本正在自己的窗口中处理XML. #!/bin/bash while true do perlStat=`top -l 1 -pid $1 -stats pid,mem,purg,vsize | grep perl5` echo "`date` ::> $perlStat" sleep 5 done 以下是perl脚本处理XML时运行的shell脚本的输出: keve@deimos:DATA$./monitorTWIGprocess.sh 3237 2017 Nov 18 Szo 23:45:53 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:00 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:06 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:12 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:18 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:24 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:30 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:36 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:42 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:48 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:46:54 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:47:01 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A 2017 Nov 18 Szo 23:47:07 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:13 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:19 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:25 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:31 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:37 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A 2017 Nov 18 Szo 23:47:43 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:47:49 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:47:56 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:02 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:08 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:14 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:20 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:26 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:32 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:38 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:44 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:51 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:48:57 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:03 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:09 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:15 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:21 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:27 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:33 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:39 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:46 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:52 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:49:58 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:04 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:10 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:16 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:22 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:28 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:35 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:41 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:47 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:53 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:50:59 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:05 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:11 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:17 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:23 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:29 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:36 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:42 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:48 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A 2017 Nov 18 Szo 23:51:54 CET ::> 3237 perl5.18 0.0 125M+ 0B N/A 2017 Nov 18 Szo 23:52:00 CET ::> 3237 perl5.18 0.0 278M+ 0B N/A 2017 Nov 18 Szo 23:52:06 CET ::> 3237 perl5.18 0.0 430M+ 0B N/A 2017 Nov 18 Szo 23:52:12 CET ::> 3237 perl5.18 0.0 584M+ 0B N/A 2017 Nov 18 Szo 23:52:18 CET ::> 3237 perl5.18 0.0 737M+ 0B N/A 2017 Nov 18 Szo 23:52:24 CET ::> 3237 perl5.18 0.0 889M+ 0B N/A 2017 Nov 18 Szo 23:52:31 CET ::> 3237 perl5.18 0.0 1042M+ 0B N/A 2017 Nov 18 Szo 23:52:37 CET ::> 3237 perl5.18 0.0 1195M+ 0B N/A 2017 Nov 18 Szo 23:52:43 CET ::> 3237 perl5.18 0.0 1349M+ 0B N/A 2017 Nov 18 Szo 23:52:49 CET ::> 3237 perl5.18 0.0 1502M+ 0B N/A 2017 Nov 18 Szo 23:52:55 CET ::> 3237 perl5.18 0.0 1656M+ 0B N/A 2017 Nov 18 Szo 23:53:01 CET ::> 3237 perl5.18 0.0 1809M+ 0B N/A 2017 Nov 18 Szo 23:53:07 CET ::> 3237 perl5.18 0.0 1961M+ 0B N/A 2017 Nov 18 Szo 23:53:13 CET ::> 3237 perl5.18 0.0 2114M+ 0B N/A 2017 Nov 18 Szo 23:53:19 CET ::> 3237 perl5.18 0.0 2267M+ 0B N/A 2017 Nov 18 Szo 23:53:26 CET ::> 3237 perl5.18 0.0 2420M+ 0B N/A 2017 Nov 18 Szo 23:53:32 CET ::> 3237 perl5.18 0.0 2573M+ 0B N/A 2017 Nov 18 Szo 23:53:38 CET ::> 3237 perl5.18 0.0 2726M+ 0B N/A 2017 Nov 18 Szo 23:53:44 CET ::> 3237 perl5.18 0.0 2879M+ 0B N/A 2017 Nov 18 Szo 23:53:50 CET ::> 3237 perl5.18 0.0 3032M+ 0B N/A 2017 Nov 18 Szo 23:53:56 CET ::> 3237 perl5.18 0.0 3186M+ 0B N/A 2017 Nov 18 Szo 23:54:02 CET ::> 3237 perl5.18 0.0 3339M+ 0B N/A 2017 Nov 18 Szo 23:54:08 CET ::> 3237 perl5.18 0.0 3492M+ 0B N/A 2017 Nov 18 Szo 23:54:15 CET ::> 3237 perl5.18 0.0 3646M+ 0B N/A 2017 Nov 18 Szo 23:54:21 CET ::> 3237 perl5.18 0.0 3786M+ 0B N/A 2017 Nov 18 Szo 23:54:27 CET ::> 3237 perl5.18 0.0 3502M+ 0B N/A 2017 Nov 18 Szo 23:54:33 CET ::> ^C keve@deimos:DATA$ 请注意23:51:54内存使用量的增加.那是另一个输出中的3分钟差距开始的时候.内存使用量正在迅速增加. 令我感到困惑的是,在处理最后一个(119,335th)产品标签时,是什么导致内存使用量迅速增加.不管它是什么,为什么它会使用如此多的内存? 3.5G而不是15M,那不行. 难道我做错了什么? 关于如何避免内存使用增加的任何建议? 稍后添加,以回应我收到的原始帖子的答案. 补充 my $t = XML::Twig->new( ##twig_handlers => { 'product' => &;do_what_needs_to_be_done_with_each_product },twig_roots => { 'product' => &;do_what_needs_to_be_done_with_each_product },twig_print_outside_roots => 0,pretty_print => 'indented' ); 我离开了$twig-> purge();我子里面的指示. 这是perl脚本的输出: keve@deimos:DATA$./twigExample.pl product_db_extract.xml Res: 1591 perl5.18 0.0 12M+ -> item count: 2852 <- time: Sun Nov 19 15:20:51 2017 Res: 1591 perl5.18 0.0 12M+ -> item count: 6106 <- time: Sun Nov 19 15:20:58 2017 Res: 1591 perl5.18 0.0 12M+ -> item count: 9341 <- time: Sun Nov 19 15:21:05 2017 Res: 1591 perl5.18 0.0 12M+ -> item count: 12141 <- time: Sun Nov 19 15:21:12 2017 . . . Res: 1591 perl5.18 0.0 15M+ -> item count: 112293 <- time: Sun Nov 19 15:26:41 2017 Res: 1591 perl5.18 0.0 15M+ -> item count: 114255 <- time: Sun Nov 19 15:26:48 2017 Res: 1591 perl5.18 0.0 15M+ -> item count: 116171 <- time: Sun Nov 19 15:26:55 2017 Res: 1591 perl5.18 0.0 15M+ -> item count: 118099 <- time: Sun Nov 19 15:27:02 2017 (Parse finished) Res: 1591 perl5.18 0.0 15M+ -> item count: 119335 <- time: Sun Nov 19 15:27:56 2017 (Purge finished) Res: 1591 perl5.18 0.0 15M+ -> item count: 119335 <- time: Sun Nov 19 15:27:57 2017 JOB COMPLETE. 119335 items processed. keve@deimos:DATA$ 这是监视shell脚本的输出: keve@deimos:DATA$./monitorTWIGprocess.sh 1591 2017 Nov 19 Vas 15:20:57 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:03 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:09 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:16 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:22 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:28 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:34 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:40 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:46 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:52 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:21:58 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:22:04 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:22:10 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A 2017 Nov 19 Vas 15:22:16 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:22 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:28 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:35 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:41 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:47 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A 2017 Nov 19 Vas 15:22:53 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:22:59 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:05 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:11 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:17 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:23 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:29 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:35 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:41 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:47 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:23:54 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:00 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:06 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:12 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:18 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:24 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:30 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:36 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:42 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:48 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:24:54 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:00 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:06 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:13 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:19 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:25 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:31 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:37 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:43 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:49 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:25:55 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:01 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:07 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:13 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:19 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:26 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:32 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:38 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:44 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:50 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:26:56 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:02 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:08 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:14 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:20 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:26 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:32 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:38 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:44 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:51 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:27:57 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A 2017 Nov 19 Vas 15:28:03 CET ::> ^C keve@deimos:DATA$ 好消息是使用twig_roots方法而不是twig处理程序使我的perl代码表现得像我想要的那样.它通过一个巨大的XML文件结束从每个产品中提取数据(提取的数据不是XML格式),而使用的内存量保持在20兆字节以下.灿烂! 解决方法
您正在构建一个完整的XML数据结构,除了产品元素,只是最后将它全部丢弃
您没有说明您实际想要对数据做什么,但如果您提供twig_handlers,那么XML :: Twig期望生成输入数据的过滤/修改版本 如果您根本不想要任何输出XML,或者您想构建自己的输出而不是修改输入,那么我建议您改用twig_roots,就像这样 这是未经测试的代码.我现在正在旅行,而不是靠近PC系统进行测试 my $t = XML::Twig->new( twig_roots => { product => &;do_what_needs_to_be_done_with_each_product },pretty_print => 'indented',); 请注意,do_what_needs_to_be_done_with_each_product(我希望这不是真正的标识符)不应该包含$t->清除工作时这样 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |