Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > чтение из файла, копирование


Автор: yodgik 6.2.2007, 22:11
подскажите как можно реализовать есть файл с ip адресами
хочется прочитать пять строк потом по этим 5 ip  
скопировать какой нить файл.  если всё ок то взять следующие 
5 адресов и проделать с ними тоже самое.

Автор: amg 7.2.2007, 08:43
Ну почему люди не хотят писАть по-русски...
Не уверен, что правильно понял вопрос. Следующий код читает файл и каждые 5 строк записывает в новый файл с тем же именем и инкрементируемым расширением.
Код

$file = 'ip-addr'; # файл с IP-адресами, по одному на строку
$i = 1; # счетчик файлов
$count = 0; # счетчик строк
open IP, $file or die;
while (<IP>) {
  if ($count == 0) {
    open I, "> $file.$i" or die;
  }
  
  # Делаем что-то с очередным IP
  print I;
  
  $count++;
  
  if ($count == 5) {
    close I;
    $i++;
    $count = 0;
  }
}
close IP;


Автор: yodgik 7.2.2007, 13:28
хочется реализовать многопоточность. 
Тоесть взял 5 ip копирую файло на 1 из 5 скопировалось быстрее  взял ещё  1 ip 
копирую дальше. 
Может это как то по другому реализовывается подскажите как ?

Автор: amg 7.2.2007, 13:55
Цитата(yodgik @  7.2.2007,  13:28 Найти цитируемый пост)
хочется реализовать многопоточность. 
Бог в помощь, только, IMHO, многопоточность здесь ничего не даст. Она нужна, например, для всяких сетевых дел, когда компьютер ждет и ничего не делает, а здесь, если исходный файл очень большой, скорость будет ограничиваться временем создания огромного количества файлов.

Автор: yodgik 7.2.2007, 19:21
ну так здесь один файл может закачаться быстрее чем все остальные 

Автор: korob2001 20.2.2007, 01:10
А почему нужно читать по пять строк из файла? Может лучше прочесть все IP, создать 5 потоков, как только один из потоков освобождается, запускать новый поток с следующим IP и так по до тех пор, пока не пройдём весь список IP адресов?
Если конечно, я верно понял условие.
Здесь я как-то приводил пример программы, которая ищет одновременно в нескольких файлах. Если интересно, вот эта тема:
http://forum.vingrad.ru/index.php?showtopic=80983&view=findpost&p=628501

Цитата

Бог в помощь, только, IMHO, многопоточность здесь ничего не даст.

Думаю, что многопоточность, даст хотябы то, что программа не будет находиться в подвешенном состоянии, от того, что основной поток захватит все доступные ресурсы, для выполнения всех этих операций. В случае с многопоточностью, ресурсы будут равномерно, ну или почти равномерно, распределены между потоками, основной же поток позволит реагировать программе на действия пользователя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)