diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-06-11 16:47:40 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-06-11 16:47:40 +0200 |
commit | 29eb123beb1c55e5db4aa652d843adccbd09ae18 (patch) | |
tree | fc85ccf6a7eaf87b35058915b534ccf634f2ff94 /lib/git/async/__init__.py | |
parent | f606937a7a21237c866efafcad33675e6539c103 (diff) | |
parent | e14e3f143e7260de9581aee27e5a9b2645db72de (diff) | |
download | gitpython-29eb123beb1c55e5db4aa652d843adccbd09ae18.tar.gz |
Merge branch 'cleanup' into async
Diffstat (limited to 'lib/git/async/__init__.py')
-rw-r--r-- | lib/git/async/__init__.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/git/async/__init__.py b/lib/git/async/__init__.py index 89b9eb47..e212f1b2 100644 --- a/lib/git/async/__init__.py +++ b/lib/git/async/__init__.py @@ -1 +1,30 @@ """Initialize the multi-processing package""" + +#{ Initialization +def _init_atexit(): + """Setup an at-exit job to be sure our workers are shutdown correctly before + the interpreter quits""" + import atexit + import thread + atexit.register(thread.do_terminate_threads) + +def _init_signals(): + """Assure we shutdown our threads correctly when being interrupted""" + import signal + import thread + + prev_handler = signal.getsignal(signal.SIGINT) + def thread_interrupt_handler(signum, frame): + thread.do_terminate_threads() + if callable(prev_handler): + prev_handler(signum, frame) + raise KeyboardInterrupt() + # END call previous handler + # END signal handler + signal.signal(signal.SIGINT, thread_interrupt_handler) + + +#} END init + +_init_atexit() +_init_signals() |