aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-03-04 14:28:00 -0600
committertlatorre <tlatorre@uchicago.edu>2019-03-04 14:28:00 -0600
commitc44a91ba885e54650ecfd069aa8d1186a1a6c1c2 (patch)
tree529ff9c7e5d899fd2a4744b195b2bcbcdf7e474b
parentb72051495a71131aaa4226c35d304b45ef0ab579 (diff)
downloadsddm-c44a91ba885e54650ecfd069aa8d1186a1a6c1c2.tar.gz
sddm-c44a91ba885e54650ecfd069aa8d1186a1a6c1c2.tar.bz2
sddm-c44a91ba885e54650ecfd069aa8d1186a1a6c1c2.zip
update run-fit so that you can ctrl-c it
-rwxr-xr-xsrc/run-fit17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/run-fit b/src/run-fit
index 6c8bb58..203aa59 100755
--- a/src/run-fit
+++ b/src/run-fit
@@ -13,6 +13,8 @@ def run_fit(filename):
if __name__ == '__main__':
import argparse
from multiprocessing import Pool, cpu_count
+ import signal
+ import os
parser = argparse.ArgumentParser("fit multiple zdab files")
parser.add_argument("-j", "--jobs", type=int, default=None,
@@ -26,5 +28,18 @@ if __name__ == '__main__':
if jobs is None:
jobs = cpu_count()
+ # see https://stackoverflow.com/questions/11312525/catch-ctrlc-sigint-and-exit-multiprocesses-gracefully-in-python
+ handler = signal.signal(signal.SIGINT, signal.SIG_IGN)
p = Pool(jobs)
- p.map(run_fit,args.filenames)
+ signal.signal(signal.SIGINT, handler)
+ try:
+ result = p.map_async(run_fit,args.filenames)
+ result.get()
+ except KeyboardInterrupt:
+ print("ctrl-c caught. quitting...")
+ p.terminate()
+ os.killpg(os.getpgid(0),9)
+ else:
+ p.close()
+
+ p.join()