in reply to Parallel downloading under Win32?
- under Win32 AND Linux
- without having it crash due to too many leaked scalars
- without using a GB of ram
- without being incredibly slow when downloading
(I don't have Linux!)
(The maximum throughput of my connection: 2496 kbps.)
#! perl -sw use 5.010; use strict; use threads ( stack_size => 0 );; use Thread::Queue; sub thread { my $tid = threads->tid; require LWP::Simple; my( $Q, $dir ) = @_; while( my $url = $Q->dequeue ) { my( $file ) = $url =~ m[/([^/]+)$]; my $status = LWP::Simple::getstore( $url, "$dir/$file" ); printf STDERR "[$tid] $url => $dir/$file: $status\n"; } } our $T ||= 4; our $DIR ||= '.'; say scalar localtime; my $Q = new Thread::Queue; my @threads = map threads->create( \&thread, $Q, $DIR ), 1 .. $T; chomp, $Q->enqueue( $_ ) while <>; $Q->enqueue( (undef) x $T ); $_->join for @threads; say scalar localtime;
Console log from test session:
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Parallel downloading under Win32?
by Xenofur (Monk) on Apr 29, 2009 at 20:05 UTC | |
by Corion (Patriarch) on Apr 29, 2009 at 20:10 UTC | |
by Xenofur (Monk) on Apr 29, 2009 at 21:25 UTC | |
by BrowserUk (Patriarch) on Apr 29, 2009 at 21:07 UTC | |
by Xenofur (Monk) on Apr 29, 2009 at 21:36 UTC | |
by BrowserUk (Patriarch) on Apr 30, 2009 at 02:17 UTC | |
by Xenofur (Monk) on Apr 30, 2009 at 09:30 UTC | |
|