[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Parallelism a la make -j <n> / GNU parallel
From: |
Mike Frysinger |
Subject: |
Re: Parallelism a la make -j <n> / GNU parallel |
Date: |
Fri, 4 May 2012 14:53:31 -0400 |
User-agent: |
KMail/1.13.7 (Linux/3.3.4; KDE/4.6.5; x86_64; ; ) |
On Friday 04 May 2012 13:46:32 Andreas Schwab wrote:
> Mike Frysinger <vapier@gentoo.org> writes:
> > i wish there was a way to use `wait` that didn't block until all the pids
> > returned. maybe a dedicated option, or a shopt to enable this, or a new
> > command.
> >
> > for example, if i launched 10 jobs in the background, i usually want to
> > wait for the first one to exit so i can queue up another one, not wait
> > for all of them.
>
> If you set -m you can trap on SIGCHLD while waiting.
awesome, that's a good mitigation
#!/bin/bash
set -m
cnt=0
trap ': $(( --cnt ))' SIGCHLD
for n in {0..20} ; do
(
d=$(( RANDOM % 10 ))
echo $n sleeping $d
sleep $d
) &
: $(( ++cnt ))
if [[ ${cnt} -ge 10 ]] ; then
echo going to wait
wait
fi
done
trap - SIGCHLD
wait
it might be a little racy (wrt checking cnt >= 10 and then doing a wait), but
this is good enough for some things. it does lose visibility into which pids
are live vs reaped, and their exit status, but i more often don't care about
that ...
-mike
signature.asc
Description: This is a digitally signed message part.
Re: Parallelism a la make -j <n> / GNU parallel, Chet Ramey, 2012/05/04
- Re: Parallelism a la make -j <n> / GNU parallel, Mike Frysinger, 2012/05/04
- Re: Parallelism a la make -j <n> / GNU parallel, Andreas Schwab, 2012/05/04
- Re: Parallelism a la make -j <n> / GNU parallel,
Mike Frysinger <=
- Re: Parallelism a la make -j <n> / GNU parallel, John Kearney, 2012/05/04
- Re: Parallelism a la make -j <n> / GNU parallel, Greg Wooledge, 2012/05/04
- Re: Parallelism a la make -j <n> / GNU parallel, John Kearney, 2012/05/04
Re: Parallelism a la make -j <n> / GNU parallel, Mike Frysinger, 2012/05/04
Re: Parallelism a la make -j <n> / GNU parallel, John Kearney, 2012/05/04
Re: Parallelism a la make -j <n> / GNU parallel, Mike Frysinger, 2012/05/05
Re: Parallelism a la make -j <n> / GNU parallel, Andreas Schwab, 2012/05/05
Re: Parallelism a la make -j <n> / GNU parallel, Chet Ramey, 2012/05/07
Re: Parallelism a la make -j <n> / GNU parallel, John Kearney, 2012/05/05
Re: Parallelism a la make -j <n> / GNU parallel, Mike Frysinger, 2012/05/06