在Python中将multiprocessing.Array转换为ctypes.c_void_p

在Python中将multiprocessing.Array转换为ctypes.c_void_p,python,ctypes,python-multiprocessing,Python,Ctypes,Python Multiprocessing,我需要将a转换为c\u void\u p。目前我拥有的是: shared_mem_bfr = multiprocessing.Array(c_uint8, img_width*img_height*3) npyarr = np.frombuffer(shared_mem_bfr.get_obj(), c_uint8) memory_buffer = npyarr.ctypes.data_as(c_void_p) 困扰我的是,我首先将其转换为一个Numpy数组,然后再转换为一个c_void_p。

我需要将a转换为
c\u void\u p
。目前我拥有的是:

shared_mem_bfr = multiprocessing.Array(c_uint8, img_width*img_height*3)
npyarr = np.frombuffer(shared_mem_bfr.get_obj(), c_uint8)
memory_buffer = npyarr.ctypes.data_as(c_void_p)

困扰我的是,我首先将其转换为一个Numpy数组,然后再转换为一个c_void_p。有没有办法删除中间步骤?

使用
ctypes.addressof

import numpy as np
import multiprocessing as mp
import ctypes as c

shared_mem_bfr = mp.Array(c.c_uint8, 100)
print(c.c_void_p(c.addressof(shared_mem_bfr.get_obj())))

npyarr = np.frombuffer(shared_mem_bfr.get_obj(), c.c_uint8)
memory_buffer = npyarr.ctypes.data_as(c.c_void_p)
print(memory_buffer)
输出:

c_void_p(1552895115472)
c_void_p(1552895115472)