@@ -112,17 +112,31 @@ def __init__(self, name, flags=None, mode=384, size=0, read_only=False):
112
112
raise FileExistsError (name )
113
113
114
114
self ._mmap = mmap .mmap (- 1 , size , tagname = name )
115
- self .buf = memoryview (self ._mmap )
115
+ self ._buf = memoryview (self ._mmap )
116
116
self .name = name
117
117
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
119
129
120
130
def __repr__ (self ):
121
131
return f'{ self .__class__ .__name__ } ({ self .name !r} , size={ self .size } )'
122
132
123
133
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
126
140
127
141
def unlink (self ):
128
142
"""Windows ensures that destruction of the last reference to this
@@ -157,7 +171,7 @@ class PosixSharedMemory:
157
171
fd = - 1
158
172
name = None
159
173
_mmap = None
160
- buf = None
174
+ _buf = None
161
175
162
176
def __init__ (self , name , flags = None , mode = 384 , size = 0 , read_only = False ):
163
177
if name and (flags is None ):
@@ -185,7 +199,7 @@ def __init__(self, name, flags=None, mode=384, size=0, read_only=False):
185
199
self .unlink ()
186
200
raise
187
201
self ._mmap = mmap .mmap (self .fd , self .size )
188
- self .buf = memoryview (self ._mmap )
202
+ self ._buf = memoryview (self ._mmap )
189
203
190
204
@property
191
205
def size (self ):
@@ -195,6 +209,11 @@ def size(self):
195
209
else :
196
210
return 0
197
211
212
+ @property
213
+ def buf (self ):
214
+ "A memoryview of contents of the shared memory block."
215
+ return self ._buf
216
+
198
217
def _open_retry (self ):
199
218
# generate a random name, open, retry if it exists
200
219
while True :
@@ -215,9 +234,9 @@ def unlink(self):
215
234
_posixshmem .shm_unlink (self .name )
216
235
217
236
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
221
240
if self ._mmap is not None :
222
241
self ._mmap .close ()
223
242
self ._mmap = None
0 commit comments