с xargs я погорячился, сорри вот такое выполнится для всех кусков, но не параллельно, к сожалению =( ls -1 x* | xargs -I % perl script.pl %
хотя можно сделать ещё одну обёртку с "perl script.pl $1 &" для распараллеливания, но это уже будет перебор т.ч. ваше решение наиболее простое (но не будет работать с пустым входным файлом) Tue, 27 May 2014 20:00:41 +0400 от Харпалёв Иван <[email protected]>: >Пока ограничился полумерой: распараллеливание обработки файла по кускам. >Действительно очень просто сделалось на BASH: > >n=3 f=input; split -l $(wc -l $f | (read l d; echo $(($l/$n+1)) )) $f >#порезали на n кусков построчно >for f in x*; do > perl script.pl $f& >done; >wait; #надо запускать весь код в новом bash, чтобы wait не ждал какие-нибудь >древние процессы. >cat o* > output > > >не нашёл в man xargs, как параллелить (( --- что имели ввиду? > >GNU parallel во истину похоже на решение, но увы нет sudo, чтобы поставить >его в систему. > >очень интересно прозвучало про " обернуть потоки в unix-сокеты" -- поясните >чуток, плиз что имеется ввиду или ссылку какую. > >Спасибо! > > >26 мая 2014 г., 20:25 пользователь Antonio Nikishaev < [email protected] > написал: >>Харпалёв Иван < [email protected] > writes: >> >>> Доброго времени суток, могучий MoscowPM! >>> >>> Есть перловый скрипт, который работает в один поток, и на каждую >>> строку из STDIN выводит одну строку в STDOUT. >>> >>> Есть ли какой софт, чтоб можно было написать >> >>GNU parallel >> >>> cat data | perl paralleler.pl -script= very_complex_script.pl -n=8 | . >>> .. >>> >>> Или посоветуйте, как его писать. >>> Как сделать неблокирующее чтение из воркеров в скрипте мастере? >>> >>> Уважение >>> Иван Харпалёв >>-- >>Moscow.pm mailing list >>[email protected] | http://moscow.pm.org > >-- >Moscow.pm mailing list >[email protected] | http://moscow.pm.org >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
