summaryrefslogtreecommitdiffstats
path: root/Lib/multiprocessing/process.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-06-06 17:35:31 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-06-06 17:35:31 (GMT)
commit176f07dadf80c27348486fdd8017fabbb30da842 (patch)
treed489214386a5a7d5efec5d157be5783554c6cec2 /Lib/multiprocessing/process.py
parentf068ab830448ea9f78ee0dfbb29c12211d1b6aee (diff)
downloadcpython-176f07dadf80c27348486fdd8017fabbb30da842.zip
cpython-176f07dadf80c27348486fdd8017fabbb30da842.tar.gz
cpython-176f07dadf80c27348486fdd8017fabbb30da842.tar.bz2
Issue #12040: Expose a new attribute `sentinel` on instances of
:class:`multiprocessing.Process`. Also, fix Process.join() to not use polling anymore, when given a timeout.
Diffstat (limited to 'Lib/multiprocessing/process.py')
-rw-r--r--Lib/multiprocessing/process.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/Lib/multiprocessing/process.py b/Lib/multiprocessing/process.py
index 3fb9ff6..99ee532 100644
--- a/Lib/multiprocessing/process.py
+++ b/Lib/multiprocessing/process.py
@@ -132,6 +132,7 @@ class Process(object):
else:
from .forking import Popen
self._popen = Popen(self)
+ self._sentinel = self._popen.sentinel
_current_process._children.add(self)
def terminate(self):
@@ -218,6 +219,17 @@ class Process(object):
pid = ident
+ @property
+ def sentinel(self):
+ '''
+ Return a file descriptor (Unix) or handle (Windows) suitable for
+ waiting for process termination.
+ '''
+ try:
+ return self._sentinel
+ except AttributeError:
+ raise ValueError("process not started")
+
def __repr__(self):
if self is _current_process:
status = 'started'