[Moscow.pm] Распараллелить

Akzhan Abdulin akzhan.abdulin на gmail.com
Вт Окт 16 02:41:01 PDT 2012


Я же говорил, изучайте Erlang/OTP. Там всё это есть из коробки. И слава
богу, а не подписан на их списки рассылки.

16 октября 2012 г., 13:31 пользователь ksvs <ksvs1996 на ymail.com> написал:

> Привет, это опять я. Все, решил.
> Буду учить Perl как супер-пупер динамический и Haskell как супер-пупер
> статический.
>
> Уже прочитал всего Ларри и начал читать Линкольна про сетевое
> программирование.
>
> Вот уже написал программу на Perl, которая показывает кто больше пишет в
> moscow-pm (программа в конце письма):
> 196   Alexandr Alexeev
> 174   Ivan Petrov
> 164   Alexandr Gomoliako
> 124   Михаил Монашёв
> 110   Akzhan Abdulin
>
> Теперь буду, думать как сделать, чтобы страницы запрашивались и
> обрабатывались одновременно.
> Линкольн говорит, что thread использовать не стоит.
> Наверно, ситуация с тех пор не изменилось, так как у меня perl ругается:
> "This Perl not built to support threads".
> Можно попробовать, как кто-то мне говорил, асинхронные библиотеки. А
> какие? Их так много на CPAN.
>
> Но, ведь кроме получения данных надо их обрабатывать.
> Хочется, чтобы все ядра процессора работали, а не одно.
> Поэтому надо использовать fork.
>
> Как-то не понятно, а когда нужны асинхронные библиотеки? Если интернет
> быстрый.
> Читал, что fork не занимает много памяти из-за COW (или как оно там).
> Но какая разница 10 процессов по 1 HTML странички в каждом или в одном 10
> HTML страничек?
> А так при анализе страничек все ядра процессора будут использоваться!
> Да и базы данных все синхронные, кажется.
>
> Или асинхронные библиотеки были нужны в прошлом, когда интернет был
> медленный и процессоры с одним ядром?
>
> А сейчас изучение затормозилось. Не могу найти хороший модуль, для общения
> с дочерними процессами.
> Есть модуля для распараллеливания задач по fork, но они все примитивные.
> Хочется, чтобы дочерний процесс мог у родителя запросить дополнительные
> данные, если в этом возникнет необходимость,
> вернуть промежуточные результаты и прочие.
> В каком модуле на СПАНЕ это есть? А есть, чтобы можно было не только
> задействовать все ядра CPU, а и несколько компьютеров?
>
> Решил это глянуть на haskell. Там все это вроде есть.
> Но в нем я запутался в другом. Говорят, что ленивый ввод вывод - это круто.
> А потом говорят, что в нем много проблем и надо использовать не его, а
> какие-то трубы (conduit) или энумераторы.
>
> Что-то совсем нет настроения...
>
> __END__
>
> use LWP;
>
> my $ua = LWP::UserAgent->new();
>
> my $base_url = "http://mail.pm.org/pipermail/moscow-pm/";
>
> my %a = ();
>
> my $r = $ua->get($base_url);
> my $c = $r->content();
> my @m = $c =~ m/"2012-\w+\/author\.html"/g;
> foreach my $m (@m) {
>     $m =~ s/"//g;
>
>     my $new_url = $base_url . $m;
>     my $r = $ua->get($new_url);
>     my $c = $r->content;
>     my @a = $c =~ m/<I>.+?<\/I>/g;
>
>     foreach my $a (@a) {
>         $a =~ s/<I>//g;
>         $a =~ s/<\/I>//g;
>         $a{$a} = $a{$a} + 1;
>     }
> }
>
> my @a = keys(%a);
> my @as = sort(@a);
> foreach my $as (@as) {
>     my $n = $a{$as};
>     print $n . "   " . $as . "\n";
> }
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20121016/85efbe54/attachment.html>


Подробная информация о списке рассылки Moscow-pm