több processzoros bash script

Fórumok

Szeretnék sok file-t feldolgozni, de a szűk keresztmetszetnek a file-ok egymás utáni olvasása bizonyul. Viszont ha külön processzoron tudna futni minden file, persze meghatározott maximális processzort használva, akkor lényegesen felgyorsíthatnám a végrehajtást.
Bash-ben kéne ezt elkövetni.

Van e erre valami szép megoldás?
Hogy tudnám egy egyes feladatokat egy közös csatornába irányítani?

Hozzászólások

Ha valóban a fájlok _olvasása_ vagyis az IO a szűk keresztmetszet, akkor a többszálúsítás nem sokat segít.

Ha úgy érted, hogy maga a fájlok beolvasása elhanyagolható időt vesz igénybe, de a feldolgozásuk már jelentőset, és szeretnéd, hogy a több fájl feldolgozása fusson egymás mellett, arra meg nem elég egy egyszerű

$ időigényes_feladat fájl1 & időigényes_feladat fájl2 & időigényes_feladat fájl3 &

?

Ha meg az kell, hogy valami figyelje, hogy épp hány processz fut, és ha kevesebb, mint a magok száma, akkor mindig indítson újabbakat, arra a kollégák írtak javaslatokat.

A sok file egymás utáni beolvasása a szűk keresztmetszet. (kb 10-20 ezer file)
Ha nem egy file feldolgozása folyna egyidőben, hanem minden processzoron egy, akkor sokkal hamarabb ledarálná a feladatot, talán még akkor is, ha egy procin 2-3 file feldolgozás folyna egyszerre.
Igazából a közös kimenet ami gondot okoz, de max lementem az eredményeket külön egy közös azonosítóval, majd a sok kicsi kimenetet egyesítem.
A legtöbb művelet grep vagy awk, így sokat gyorsulhat.