<HTML><BODY>Tue, 16 Oct 2012 10:31:11 +0100 (BST) от ksvs <ksvs1996@ymail.com>:<br>
<blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;" class="mailru-blockquote"><div id=""><div class="js-helper js-readmsg-msg"><div id="style_13503799090000000879" class="mr_read__body"><div id="style_13503799090000000879_BODY"><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span>Теперь буду, думать как сделать, чтобы
 страницы запрашивались и обрабатывались одновременно.<br>Линкольн говорит, что thread использовать не стоит.<br>Наверно, ситуация с тех пор не изменилось, так как у меня perl ругается: "This Perl not built to support threads".<br>Можно попробовать, как кто-то мне говорил, асинхронные библиотеки. А какие? Их так много на CPAN.</span></div></div></div></div></div></div></blockquote>Ну во-первых: Если сбилдить перл с поддержкой тредов, то они-таки будут, но действительно - потоки нужны только тогда, когда идет обмен большим количеством информации, а работать с шаред памятью не хочется/не знаешь как или не получается по тем или иным причинам. Все остальное решается префорком и кормлением задачами через пайпы. В вашем случае именно это и надо сделать.<br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;" class="mailru-blockquote"><div id=""><div class="js-helper js-readmsg-msg"><div id="style_13503799090000000879" class="mr_read__body"><div id="style_13503799090000000879_BODY"><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span> Но, ведь кроме получения данных надо их обрабатывать.<br>Хочется, чтобы все ядра процессора работали, а не одно.<br>Поэтому надо использовать fork.<br><br>Как-то не понятно, а когда нужны асинхронные библиотеки? Если интернет
 быстрый.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>Читал, что fork не занимает много памяти из-за COW (или как оно там).<br>Но какая разница 10 процессов по 1 HTML странички в каждом или в одном 10 HTML страничек?<br>А так при анализе страничек все ядра процессора будут использоваться!<br>Да и базы данных все синхронные, кажется.</span></div></div></div></div></div></div></blockquote>Тут есть другая мысль... Если вы используете синххронные библиотеки, то модель работы такая: Запрос, ждем пока ответят, обрабатываем. Проблема в том, что будет часть "ждем когда ответят". В это время процесс ничего не делает (грубо говоря, конечно), а это значит что надо плодить процессов больше, чем ядер у процессора и вообще получается сложно ответить на вопрос "сколько процессов надо наплодить"<br><br>Если-же вы пользуете асинхронные библиотеки, то получается так: Запрос(ы), если есть что готовое, то обрабатываем, проверяем что запросы закончились и заного запрашиваем. В этом случае у вас получается что процессов надо ровно столько, сколько ядер и вы можете быть уверенными, что, в случае сложной обработки (когда у вас узкое горло не сеть, а процессор), все ядра будут нагруженными.<br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;" class="mailru-blockquote"><div id=""><div class="js-helper js-readmsg-msg"><div id="style_13503799090000000879" class="mr_read__body"><div id="style_13503799090000000879_BODY"><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span> А сейчас изучение затормозилось. Не могу найти
 хороший модуль, для общения с дочерними процессами.<br>Есть модуля для распараллеливания задач по fork, но они все примитивные.<br>Хочется, чтобы дочерний процесс мог у родителя запросить дополнительные данные, если в этом возникнет необходимость,<br>вернуть промежуточные результаты и прочие.<br>В каком модуле на СПАНЕ это есть? А есть, чтобы можно было не только задействовать все ядра CPU, а и несколько компьютеров?</span></div></div></div></div></div></div></blockquote>А напишите сами... У вас всегда есть пайпы (STDIN STDOUT), вот через них и общайтесь с чилдами. Еще можно через юникс сокеты или просто через локальный сокет-сервер и сокет-клиенты.<br></BODY></HTML>