mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00
gh-91577: SharedMemory move imports out of methods (#91579)
SharedMemory.unlink() uses the unregister() function from resource_tracker. Previously it was imported in the method, but this can fail if the method is called during interpreter shutdown, for example when unlink is part of a __del__() method. Moving the import to the top of the file, means that the unregister() method is available during interpreter shutdown. The register call in SharedMemory.__init__() can also use this imported resource_tracker.
This commit is contained in:
parent
a38c2a61d5
commit
9a458befdd
2 changed files with 4 additions and 4 deletions
|
@ -23,6 +23,7 @@ else:
|
|||
import _posixshmem
|
||||
_USE_POSIX = True
|
||||
|
||||
from . import resource_tracker
|
||||
|
||||
_O_CREX = os.O_CREAT | os.O_EXCL
|
||||
|
||||
|
@ -116,8 +117,7 @@ class SharedMemory:
|
|||
self.unlink()
|
||||
raise
|
||||
|
||||
from .resource_tracker import register
|
||||
register(self._name, "shared_memory")
|
||||
resource_tracker.register(self._name, "shared_memory")
|
||||
|
||||
else:
|
||||
|
||||
|
@ -237,9 +237,8 @@ class SharedMemory:
|
|||
called once (and only once) across all processes which have access
|
||||
to the shared memory block."""
|
||||
if _USE_POSIX and self._name:
|
||||
from .resource_tracker import unregister
|
||||
_posixshmem.shm_unlink(self._name)
|
||||
unregister(self._name, "shared_memory")
|
||||
resource_tracker.unregister(self._name, "shared_memory")
|
||||
|
||||
|
||||
_encoding = "utf8"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue