Skip to content

Commit 72e7761

Browse files
issue12085: Use more Pythonic way to check _child_created.
_active shouldn't be cached, it set to None on shutdown.
1 parent 505ff75 commit 72e7761

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

Diff for: Lib/subprocess.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,9 @@ def getoutput(cmd):
707707

708708

709709
class Popen(object):
710+
711+
_child_created = False # Set here since __del__ checks it
712+
710713
def __init__(self, args, bufsize=-1, executable=None,
711714
stdin=None, stdout=None, stderr=None,
712715
preexec_fn=None, close_fds=_PLATFORM_DEFAULT_CLOSE_FDS,
@@ -717,7 +720,6 @@ def __init__(self, args, bufsize=-1, executable=None,
717720
"""Create new Popen instance."""
718721
_cleanup()
719722

720-
self._child_created = False
721723
self._input = None
722724
self._communication_started = False
723725
if bufsize is None:
@@ -859,11 +861,8 @@ def __exit__(self, type, value, traceback):
859861
# Wait for the process to terminate, to avoid zombies.
860862
self.wait()
861863

862-
def __del__(self, _maxsize=sys.maxsize, _active=_active):
863-
# If __init__ hasn't had a chance to execute (e.g. if it
864-
# was passed an undeclared keyword argument), we don't
865-
# have a _child_created attribute at all.
866-
if not getattr(self, '_child_created', False):
864+
def __del__(self, _maxsize=sys.maxsize):
865+
if not self._child_created:
867866
# We didn't get to successfully create a child process.
868867
return
869868
# In case the child hasn't been waited on, check if it's done.
@@ -1446,7 +1445,7 @@ def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED,
14461445
_WTERMSIG=os.WTERMSIG, _WIFEXITED=os.WIFEXITED,
14471446
_WEXITSTATUS=os.WEXITSTATUS):
14481447
# This method is called (indirectly) by __del__, so it cannot
1449-
# refer to anything outside of its local scope."""
1448+
# refer to anything outside of its local scope.
14501449
if _WIFSIGNALED(sts):
14511450
self.returncode = -_WTERMSIG(sts)
14521451
elif _WIFEXITED(sts):

0 commit comments

Comments
 (0)