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
语法表明它是 long
或 size = 2
的数组.
创建数组时,我想将它放在数据类中,但找不到返回对象的类型。
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
语法表明它是 long
或 size = 2
的数组.