Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Prompt expansion, multi-job for



Andre Pang wrote:

>     2) Is there any way to emulate make's -jn option in the for command?
> This would be *really* useful for SMP systems.  Currently, doing something
> like "for i in ***/***.wav; do l3enc $i; done" doesn't take advantage of
> multiple CPUs (on a Linux system, at least); hacking the for command to
> accept a 'make -j'-like parameter (eg: for -j2 i in *; do l3enc $i; done)
> would allow us lucky ones who have SMP systems to do many things similar to
> the above without going mad and writing silly Makefiles simply so we can
> utilise make -j.  If someone's written a function to do this already (Bart?
> ;) it'd be *very* cool.

If I'm not mistaken, you should be able to do this by running l3enc as a
background process, i.e. for i in *.wav; do l3enc $i& done. I haven't
got an SMP system available to me to test but I'd assume that it would
allocate different l3enc processes to different processors. Putting the
process in the background means that zsh will get control back
straight-away and can run the next l3enc.

The trouble with this is that it will attempt to run all the l3encs
together. If you have say 4 processors, it may be most efficient to run
a maximum of 4 l3encs at once. This would be a bit messy to implement in
Zsh (compared to something like Ada) but can be done.

Oliver Kiddle



Messages sorted by: Reverse Date, Date, Thread, Author