summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing/util.py
diff options
context:
space:
mode:
authorRichard Oudkerk <shibturn@gmail.com>2012-06-14 14:30:10 (GMT)
committerRichard Oudkerk <shibturn@gmail.com>2012-06-14 14:30:10 (GMT)
commit73d9a292aeed5aa3414c911c1f34afeea17f0dda (patch)
tree6030ad6f193aa59ce6a06006b020dbe1e85deda6 /Lib/multiprocessing/util.py
parentbc07cb883e5c03b8c108c2c9d86bc0a158d62c27 (diff)
downloadcpython-73d9a292aeed5aa3414c911c1f34afeea17f0dda.zip
cpython-73d9a292aeed5aa3414c911c1f34afeea17f0dda.tar.gz
cpython-73d9a292aeed5aa3414c911c1f34afeea17f0dda.tar.bz2
Issue #13841: Make child processes exit using sys.exit() on Windows
Diffstat (limited to 'Lib/multiprocessing/util.py')
-rw-r--r--Lib/multiprocessing/util.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/Lib/multiprocessing/util.py b/Lib/multiprocessing/util.py
index 48abe38..8a6aede 100644
--- a/Lib/multiprocessing/util.py
+++ b/Lib/multiprocessing/util.py
@@ -269,21 +269,24 @@ _exiting = False
def _exit_function():
global _exiting
- info('process shutting down')
- debug('running all "atexit" finalizers with priority >= 0')
- _run_finalizers(0)
+ if not _exiting:
+ _exiting = True
- for p in active_children():
- if p._daemonic:
- info('calling terminate() for daemon %s', p.name)
- p._popen.terminate()
+ info('process shutting down')
+ debug('running all "atexit" finalizers with priority >= 0')
+ _run_finalizers(0)
- for p in active_children():
- info('calling join() for process %s', p.name)
- p.join()
+ for p in active_children():
+ if p._daemonic:
+ info('calling terminate() for daemon %s', p.name)
+ p._popen.terminate()
- debug('running the remaining "atexit" finalizers')
- _run_finalizers()
+ for p in active_children():
+ info('calling join() for process %s', p.name)
+ p.join()
+
+ debug('running the remaining "atexit" finalizers')
+ _run_finalizers()
atexit.register(_exit_function)