Skip to content

Commit 1f9bbf2

Browse files
committed
Change SharedMemory.buf to a read-only property as well as NamedSharedMemory.size.
1 parent 9846290 commit 1f9bbf2

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

Lib/multiprocessing/shared_memory.py

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,31 @@ def __init__(self, name, flags=None, mode=384, size=0, read_only=False):
112112
raise FileExistsError(name)
113113

114114
self._mmap = mmap.mmap(-1, size, tagname=name)
115-
self.buf = memoryview(self._mmap)
115+
self._buf = memoryview(self._mmap)
116116
self.name = name
117117
self.mode = mode
118-
self.size = size
118+
self._size = size
119+
120+
@property
121+
def size(self):
122+
"Size in bytes."
123+
return self._size
124+
125+
@property
126+
def buf(self):
127+
"A memoryview of contents of the shared memory block."
128+
return self._buf
119129

120130
def __repr__(self):
121131
return f'{self.__class__.__name__}({self.name!r}, size={self.size})'
122132

123133
def close(self):
124-
self.buf.release()
125-
self._mmap.close()
134+
if self._buf is not None:
135+
self._buf.release()
136+
self._buf = None
137+
if self._mmap is not None:
138+
self._mmap.close()
139+
self._mmap = None
126140

127141
def unlink(self):
128142
"""Windows ensures that destruction of the last reference to this
@@ -157,7 +171,7 @@ class PosixSharedMemory:
157171
fd = -1
158172
name = None
159173
_mmap = None
160-
buf = None
174+
_buf = None
161175

162176
def __init__(self, name, flags=None, mode=384, size=0, read_only=False):
163177
if name and (flags is None):
@@ -185,7 +199,7 @@ def __init__(self, name, flags=None, mode=384, size=0, read_only=False):
185199
self.unlink()
186200
raise
187201
self._mmap = mmap.mmap(self.fd, self.size)
188-
self.buf = memoryview(self._mmap)
202+
self._buf = memoryview(self._mmap)
189203

190204
@property
191205
def size(self):
@@ -195,6 +209,11 @@ def size(self):
195209
else:
196210
return 0
197211

212+
@property
213+
def buf(self):
214+
"A memoryview of contents of the shared memory block."
215+
return self._buf
216+
198217
def _open_retry(self):
199218
# generate a random name, open, retry if it exists
200219
while True:
@@ -215,9 +234,9 @@ def unlink(self):
215234
_posixshmem.shm_unlink(self.name)
216235

217236
def close(self):
218-
if self.buf is not None:
219-
self.buf.release()
220-
self.buf = None
237+
if self._buf is not None:
238+
self._buf.release()
239+
self._buf = None
221240
if self._mmap is not None:
222241
self._mmap.close()
223242
self._mmap = None

0 commit comments

Comments
 (0)