@@ -45,8 +45,24 @@ class which can be used with a `with` statement. When the program flow
4545 `unlink_on_dispose` flag.
4646 """
4747
48- def __init__ (self , name : str = None , create : bool = False , size : int = 0 ):
49- super ().__init__ (name = name , create = create , size = size )
48+ def __init__ (self , name : str = None , create : bool = False , rsize : int = 0 ):
49+ """
50+ Create a new shared memory block, or attach to an existing one.
51+
52+ :param name:
53+ The unique name for the requested shared memory, specified as a
54+ string. If create is True (i.e. a new shared memory block) and
55+ no name is given, a novel name will be generated.
56+ :param create:
57+ Whether a new shared memory block is created (True)
58+ or an existing one is attached to (False).
59+ :param rsize:
60+ Requested size in bytes. The true allocated size will be at least
61+ this much, but may be rounded up to the next block size multiple,
62+ depending on the running platform.
63+ """
64+ super ().__init__ (name = name , create = create , size = rsize )
65+ self .rsize = rsize
5066 self ._unlink_on_dispose = create
5167 if _is_worker :
5268 # HACK: Remove this shared memory block from the resource_tracker,
@@ -146,7 +162,7 @@ def __init__(self, dtype: str, shape: Sequence[int], shm: SharedMemory = None):
146162 self .shape = shape
147163 self .shm = (
148164 SharedMemory (
149- create = True , size = ceil (prod (shape ) * _bytes_per_element (dtype ))
165+ create = True , rsize = ceil (prod (shape ) * _bytes_per_element (dtype ))
150166 )
151167 if shm is None
152168 else shm
@@ -157,7 +173,7 @@ def __str__(self):
157173 f"NDArray("
158174 f"dtype='{ self .dtype } ', "
159175 f"shape={ self .shape } , "
160- f"shm='{ self .shm .name } ' ({ self .shm .size } ))"
176+ f"shm='{ self .shm .name } ' ({ self .shm .rsize } ))"
161177 )
162178
163179 def ndarray (self ):
@@ -188,7 +204,7 @@ def default(self, obj):
188204 return {
189205 "appose_type" : "shm" ,
190206 "name" : obj .name ,
191- "size " : obj .size ,
207+ "rsize " : obj .rsize ,
192208 }
193209 if isinstance (obj , NDArray ):
194210 return {
@@ -204,7 +220,7 @@ def _appose_object_hook(obj: Dict):
204220 atype = obj .get ("appose_type" )
205221 if atype == "shm" :
206222 # Attach to existing shared memory block.
207- return SharedMemory (name = (obj ["name" ]), size = (obj ["size " ]))
223+ return SharedMemory (name = (obj ["name" ]), rsize = (obj ["rsize " ]))
208224 elif atype == "ndarray" :
209225 return NDArray (obj ["dtype" ], obj ["shape" ], obj ["shm" ])
210226 else :
0 commit comments