| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Перехлес дескрипторов при работе |
| Автор: Suppir 23.6.2011, 13:33 | ||
| Добрый день! У меня есть директория с несколькими гигабайтами файлов *.txt. Также есть 20 скриптов pl, которые выглядят примерно следующим образом:
Т.е. каждый скрипт открывает каждый txt на чтение, делает какие-то проверки и пишет потом в свой лог. Сейчас я запускаю скрипты поочередно: отработает один, запущу другой и т.д. Но таким образом используется только одно ядро из 4. Не будет ли проблем с дескрипторами файлов, если я буду запускать по 4 скрипта одновременно (и, если один из них отработает, то сразу запускать следующий из очереди)? p.s. для многих скриптов нагрузка на процессор превышает нагрузку на винт, то есть винт работает со скоростью 150 Мб в секунду, а процессор позволяет обрабатывать только 5-10 Мб данных в секунду из-за сложных функций проверок. Поэтому хорошо бы использовать сразу все ядра. |
| Автор: arto 23.6.2011, 13:34 |
| будут. perldoc -f flock |
| Автор: Suppir 23.6.2011, 13:37 | ||
Думал, может быть так сделать:
Но так получается, что эти несколько гигабайт txt будут копироваться 20 раз (по количеству скриптов). Что может только замедлить работу. |
| Автор: Pfailed 23.6.2011, 14:20 |
| Если скрипты читают из этих файлов, но не пишут в них, то проблем не будет. |
| Автор: Suppir 23.6.2011, 14:48 |
| Я сейчас попробовал несколько раз запустить - по очереди и сразу несколько сразу. Результат одинаковый, то есть проблем не возникает, по-видимому. |
| Автор: afiskon 23.6.2011, 16:38 |
| Если открываете только на чтение, то проблем не будет. Но нагрузка на диск будет большой. И у вас в коде ошибка - close надо вызывать внутри первого цикла. |
| Автор: Suppir 23.6.2011, 17:01 |
да, вижу, я при примера быстро написал - опечатался |