Fix bpo-30596: Add close() method to multiprocessing.Process (#2010)

* Fix bpo-30596: Add close() method to multiprocessing.Process

* Raise ValueError if close() is called before the Process is finished running

* Add docs

* Add NEWS blurb
This commit is contained in:
Antoine Pitrou 2017-06-24 19:22:23 +02:00 committed by GitHub
parent 0ee32c1481
commit 13e96cc596
9 changed files with 106 additions and 8 deletions

View file

@ -17,6 +17,7 @@ class Popen(object):
sys.stdout.flush()
sys.stderr.flush()
self.returncode = None
self.finalizer = None
self._launch(process_obj)
def duplicate_for_child(self, fd):
@ -70,5 +71,9 @@ class Popen(object):
os._exit(code)
else:
os.close(child_w)
util.Finalize(self, os.close, (parent_r,))
self.finalizer = util.Finalize(self, os.close, (parent_r,))
self.sentinel = parent_r
def close(self):
if self.finalizer is not None:
self.finalizer()