Re: [PATCH 4/5] rteval: Break out of main loop faster on interrupt/stoptime

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, 4 Mar 2024, Crystal Wood wrote:

> Waiting up to a full minute for rteval to stop on ctrl-c can be
> frustrating.  Likewise, if a very short run is requested
> (e.g. for testing rteval itself) rounding it up to a minute is
> not polite.
> 
> Signed-off-by: Crystal Wood <crwood@xxxxxxxxxx>
> ---
>  rteval/__init__.py | 11 +++++------
>  1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/rteval/__init__.py b/rteval/__init__.py
> index 5d43615af5bb..72e3412a860e 100644
> --- a/rteval/__init__.py
> +++ b/rteval/__init__.py
> @@ -32,12 +32,11 @@ RTEVAL_VERSION = version.RTEVAL_VERSION
>  
>  earlystop = False
>  
> -stopsig_received = False
> +stopsig = threading.Event()
>  def sig_handler(signum, frame):
>      """ Handle SIGINT (CTRL + C) or SIGTERM (Termination signal) """
>      if signum in (signal.SIGINT, signal.SIGTERM):
> -        global stopsig_received
> -        stopsig_received = True
> +        stopsig.set()
>          print("*** stop signal received - stopping rteval run ***")
>      else:
>          raise RuntimeError(f"SIGNAL received! ({signum})")
> @@ -208,8 +207,8 @@ class RtEval(rtevalReport):
>              currtime = time.time()
>              rpttime = currtime + report_interval
>              load_avg_checked = 5
> -            while (currtime <= stoptime) and not stopsig_received:
> -                time.sleep(60.0)
> +            while (currtime <= stoptime) and not stopsig.is_set():
> +                stopsig.wait(min(stoptime - currtime, 60.0))
>                  if not measure_profile.isAlive():
>                      stoptime = currtime
>                      earlystop = True
> @@ -238,7 +237,7 @@ class RtEval(rtevalReport):
>              signal.signal(signal.SIGTERM, signal.SIG_DFL)
>  
>          except RuntimeError as err:
> -            if not stopsig_received:
> +            if not stopsig.is_set():
>                  raise RuntimeError(f"appeared during measurement: {err}")
>  
>          finally:
> -- 

Signed-off-by: John Kacur <jkacur@xxxxxxxxxx>





[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux