Awk обрабатывает файлы по строкам. Предполагая, что каждая операция линии не зависит от других строк, существует ли способ заставить awk обрабатывать несколько строк одновременно параллельно? Есть ли другой инструмент обработки текста, который автоматически использует параллелизм и обрабатывает данные быстрее?Параллельная обработка в awk?
ответ
Единственная реализация awk, которая пыталась обеспечить параллельную реализацию awk, была parallel-awk, но похоже, что проект уже мертв.
В противном случае одним из способов распараллеливания awk является разделение вашего ввода на куски и обработка их параллельно. Однако разделение входных данных по-прежнему будет однопоточным, что может привести к поражению цели повышения производительности, основная проблема заключается в том, что стандартная команда split
не может разделить границы строк без чтения каждой строки.
Если у вас есть GNU раскол доступны, или версию, которая поддерживает опцию -n l/*
, вот один оптимизированный способ обработки файла параллельно, предполагая, что здесь у вас есть 8 виртуальных процессоров:
inputfile=input.txt
outputfile=output.txt
script=script.awk
count=8
split -n l/$count $inputfile /tmp/_pawk$$
for file in /tmp/_pawk$$*; do
awk -f script.awk $file > ${file}.out &
done
wait
cat /tmp/_pawk$$*.out > $outputfile
rm /tmp/_pawk$$*
Вы можете использовать GNU Parallel для этой цели
Рассмотрим вы подсчитывая сумму чисел в большом файле:
cat rands20M.txt | awk '{s+=$1} END {print s}'
С GNU Параллельно вы можете сделать это в несколько потоков:
cat rands20M.txt | parallel --pipe awk \'{s+=\$1} END {print s}\' | awk '{s+=$1} END {print s}'
- 1. Параллельная обработка
- 2. Параллельная обработка в ожидании
- 3. Параллельная обработка в PHP?
- 4. Параллельная обработка в MySQL
- 5. Параллельная обработка в golang
- 6. Параллельная обработка в F #
- 7. Параллельная обработка в R
- 8. Параллельная обработка в oracle
- 9. Параллельная обработка в R
- 10. Параллельная обработка в linux
- 11. Параллельная обработка в Scala
- 12. Symfony2 параллельная обработка
- 13. Параллельная обработка сообщений (Python)
- 14. Параллельная обработка/обслуживание страниц
- 15. параллельная обработка очереди
- 16. Gforth параллельная обработка
- 17. Параллельная обработка с Numpy.loadtxt()
- 18. многоядерная и параллельная обработка
- 19. freeRTOS и параллельная обработка
- 20. Параллельная обработка на Python
- 21. подоболочки и параллельная обработка
- 22. Параллельная обработка каталога
- 23. Параллельная обработка перемешивается
- 24. Параллельная обработка набора данных
- 25. .NET параллельная обработка ArrayList
- 26. Основная ведомая параллельная обработка
- 27. Параллельная обработка запросов
- 28. Параллельная обработка - Python
- 29. Параллельная обработка C#
- 30. Параллельная обработка разделов SSAS
Я попытался это решение, но похоже, что это не работает, как ожидалось, не могли бы вы ответить на этот вопрос - Http: // StackOverflow. com/questions/41921522/parallel-execute-of-unix-command –
У меня была такая же проблема. Мне пришлось избегать многих вещей, поскольку у меня был большой скрипт awk. Лучший способ решить это - сохранить тело awk-скрипта, а затем передать его awk в параллель. См. Более ссылку ниже, где я нашел решение http://codextechnicanum.blogspot.in/2013/10/awk-and-gnu-parallel-problems-with.html – Fear