У меня есть программа perl, которая считывает пакеты потока из файла pcap, но это занимает много времени, я хочу сделать его параллельным, но я не знаю, возможно ли это или не так ли? Если да, я могу сделать это с помощью MPI? и еще один вопрос, лучший способ сделать этот код параллельным, вот часть моего кода (я думаю, что я должен работать над этой частью для параллелизма, но я не знаю, лучший способ!)Параллельно выполнение языка perl
while (!eof($inFileH))
{
#inFileH is the handler of the pcap file
#in each while I read one packet
$ts_sec = readBytes($inFileH,4);
$ts_usec = readBytes($inFileH,4);
$incl_len = readBytes($inFileH,4);
$orig_len = readBytes($inFileH,4);
if ($totalLen == 0) # it is the 1st packet
{
$startTime = $ts_sec + $ts_usec/1000000;
}
$timeStamp = $ts_sec + $ts_usec/1000000 - $startTime;
$totalLen += $orig_len;
$#packet = -1; n # initing the array
for (my $i=0 ; $i<$incl_len ; $i++) #read all included octects of the current packet
{
read $inFileH, $packet[$i], 1;
$packet[$i] = ord($packet[$i]);
}
#and after that I will work on the "packet" and analyze it
так как я должен отправить содержимое файла для других процессоров, чтобы работать на нем параллельно .....
спасибо за ваше полное объяснение, но я думаю, что огромный объем файла является узким местом, так как время выполнения уменьшается, когда файл мал, поэтому я решил разделить файл на языке perl! как вы думаете, это эффективное решение? – user3210586
Наверное, нет. Если вы можете разделить файл, вы можете пойти дальше и даже не упомянуть файл в своем скрипте вообще. Не думайте о вводе в качестве файла, который вам сначала нужно прочитать, а затем обработать, обработать его как поток входных данных, который вы можете прочитать и обработать кусок куском. Это стандартный способ делать вещи в Perl - см., Например, ['<>' construct] (http://stackoverflow.com/questions/189293/how-do-i-get-a-filehandle-from-the-commandline). – reinierpost
Я поставил свой код выше, так как вы сказали, что я использую обработчик файлов, но у меня есть некоторые проблемы с разделением потока! Я не знаю, какой эффективный способ для него !!! вы можете мне помочь? – user3210586