| Karim Belabas on Mon, 26 Sep 2005 18:25:14 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: time in computations |
* Joerg Arndt [2005-09-26 17:57]:
> * Igor Schein <igor@txc.com> [Sep 26. 2005 04:53]:
> > On Sat, Sep 24, 2005 at 12:17:56AM -0400, Mak Trifkovic wrote:
> > > Can I program something along these lines in PARI: do calculation xxx for
> > > 1 hr; if you don't finish within that time, quit.
> > >
> > > Thanks,
> > > Mak
> >
> > Workaround:
> >
> > limit cputime 3600 # if you're using csh or derivatives
> > ulimit -t 3600 # if you're using Bourne shell or derivatives
> >
> > Unfortunately it applies to the whole session, not each command.
>
> Just start it in a subshell:
> (ulimit -t 3600; gp < script.gp; )
>
> > There's no way to do it natively from inside gp. I've brought up the
> > desirability of this feature in the past, it'd be nice to have it
> > accesible via default(), with default value 0 for unlimited.
Here's a one-liner inspired by the above discussion:
timeout(T,E) = extern( Str("ulimit -t ", T, "; echo \"", E, "\" | gp -q -f") )
(18:11) gp > timeout(10, "1 + 1") \\ allow 10 sec to compute 1 + 1
time = 0 ms.
%1 = 2
(18:11) gp > timeout(10, "bnfinit(x^30 - 2)")
(18:12) gp > \\ empty output
[ Don't forget the quotes, otherwise the argument is fully evaluated before
the "limited" subshell is launched ]
Cheers,
Karim.
--
Karim Belabas Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation http://www.math.u-bordeaux.fr/~belabas/
F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]