Eryk Sun <[email protected]> added the comment:
> The process is not polled to be able to emit the warning in more
> cases, again, to ease debug.
It emits an incorrect warning if the process has already exited: "subprocess %s
is still running". This can be rectified. Here's my current understanding:
def __del__(self, _maxsize=sys.maxsize, _warn=warnings.warn):
if not self._child_created or self.returncode is not None:
return
# In Unix, not reading the subprocess exit status creates a zombie
# process, which is only destroyed at the parent Python process exit.
# In Windows, no one else should have a reference to our _handle, so
# it should get finalized and thus closed, but we use the same warning
# in order to consistently educate developers.
if self._internal_poll(_deadstate=_maxsize) is not None:
_warn("subprocess %s was implicitly finalized" % self.pid,
ResourceWarning, source=self)
else:
_warn("subprocess %s is still running" % self.pid,
ResourceWarning, source=self)
# Keep this instance alive until we can wait on it, if needed.
if _active is not None:
_active.append(self)
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue37380>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com