When creating an array, I want to put it inside a dataclass, but I cannot find the type of the returned object.
arr = multiprocessing.RawArray("i", 2)
If I do:
>>> type(arr) <class 'multiprocessing.sharedctypes.c_long_Array_2'>
but multiprocessing.sharedctypes.c_long_Array_2
does not exists.
How can I use type hints, e.g arr: the_type
with multiprocessing Array?
UPDATE
Pycharm example when using typing ctypes.c_long * 2
, there’s still a value attribute which is invalid.
Advertisement
Answer
The shared array’s type is derived from the ctypes
module. You could also perhaps use this module to help you be more explicit about the data type of the array:
import multiprocessing import ctypes # This is what you're looking for # Your function that you want to type-hint for def func(arr: ctypes.c_long * 2): # Some operations ... # Being explicit about which c-type i want my array to be arr = multiprocessing.RawArray(ctypes.c_long, 2) # This evaluates to true print(isinstance(arr, ctypes.c_long * 2))
Note: ctypes
does not come with all the possibilities of array sizes so notice the ctypes.c_long * 2
syntax to indicate that it is an array of long
of size = 2
.