MCPcopy Index your code
hub / github.com/python/cpython / _SharedMemoryTracker

Class _SharedMemoryTracker

Lib/multiprocessing/managers.py:1294–1328  ·  view source on GitHub ↗

Manages one or more shared memory segments.

Source from the content-addressed store, hash-verified

1292
1293if HAS_SHMEM:
1294 class _SharedMemoryTracker:
1295 "Manages one or more shared memory segments."
1296
1297 def __init__(self, name, segment_names=[]):
1298 self.shared_memory_context_name = name
1299 self.segment_names = segment_names
1300
1301 def register_segment(self, segment_name):
1302 "Adds the supplied shared memory block name to tracker."
1303 util.debug(f"Register segment {segment_name!r} in pid {getpid()}")
1304 self.segment_names.append(segment_name)
1305
1306 def destroy_segment(self, segment_name):
1307 """Calls unlink() on the shared memory block with the supplied name
1308 and removes it from the list of blocks being tracked."""
1309 util.debug(f"Destroy segment {segment_name!r} in pid {getpid()}")
1310 self.segment_names.remove(segment_name)
1311 segment = shared_memory.SharedMemory(segment_name)
1312 segment.close()
1313 segment.unlink()
1314
1315 def unlink(self):
1316 "Calls destroy_segment() on all tracked shared memory blocks."
1317 for segment_name in self.segment_names[:]:
1318 self.destroy_segment(segment_name)
1319
1320 def __del__(self):
1321 util.debug(f"Call {self.__class__.__name__}.__del__ in {getpid()}")
1322 self.unlink()
1323
1324 def __getstate__(self):
1325 return (self.shared_memory_context_name, self.segment_names)
1326
1327 def __setstate__(self, state):
1328 self.__init__(*state)
1329
1330
1331 class SharedMemoryServer(Server):

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…