python multiprocessing.Array 打字

python multiprocessing.Array typing

创建数组时,我想将它放在数据类中,但找不到返回对象的类型。

arr = multiprocessing.RawArray("i", 2)

如果我这样做:

>>> type(arr)
<class 'multiprocessing.sharedctypes.c_long_Array_2'>

multiprocessing.sharedctypes.c_long_Array_2 不存在。
如何使用类型提示,例如 arr: the_type 与多处理数组?

更新
Pycharm 使用键入 ctypes.c_long * 2 时的示例,仍然有一个无效的值属性。

共享数组的类型派生自 ctypes 模块。您也许还可以使用此模块来帮助您更明确地了解数组的数据类型:

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))

注意:ctypes 并没有提供数组大小的所有可能性,因此请注意 ctypes.c_long * 2 语法表明它是 longsize = 2 的数组.