Re: [PATCH] portage.getpid: call os.getpid() lazily
Brian Dolbec <[email protected]> Sat, 30 Jan 2021 11:12:24 -0500
| Newsgroups | gmane.linux.gentoo.portage.devel |
|---|---|
| Message-ID | <20210130111224.0b35a69a@rogue1> |
On Sat, 30 Jan 2021 04:59:32 -0800 Zac Medico <[email protected]> wrote: > Call os.getpid() lazily, which eliminates getpid calls when possible > after os.fork() in the portage.process module. > > Bug: https://bugs.gentoo.org/767913 > Signed-off-by: Zac Medico <[email protected]> > --- > lib/portage/__init__.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/portage/__init__.py b/lib/portage/__init__.py > index 3c9f78497..24c9d8b89 100644 > --- a/lib/portage/__init__.py > +++ b/lib/portage/__init__.py > @@ -375,7 +375,7 @@ _sync_mode = False > class _ForkWatcher: > @staticmethod > def hook(_ForkWatcher): > - _ForkWatcher.current_pid = _os.getpid() > + _ForkWatcher.current_pid = None > # Force instantiation of a new event loop policy as > a workaround # for https://bugs.python.org/issue22087. > asyncio.set_event_loop_policy(None) > @@ -388,6 +388,8 @@ def getpid(): > """ > Cached version of os.getpid(). ForkProcess updates the cache. > """ > + if _ForkWatcher.current_pid is None: > + _ForkWatcher.current_pid = _os.getpid() > return _ForkWatcher.current_pid > > def _get_stdin(): looks good