Re: [gentoo-portage-dev] [PATCH] portage.getpid: call os.getpid() lazily

2021-01-30 Thread Brian Dolbec
On Sat, 30 Jan 2021 04:59:32 -0800
Zac Medico  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 
> ---
>  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



[gentoo-portage-dev] [PATCH] portage.getpid: call os.getpid() lazily

2021-01-30 Thread Zac Medico
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 
---
 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():
-- 
2.26.2