gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:05:47 24 4
gpt4 key购买 nike

我需要转换 multiprocessing.Arrayc_void_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)

关于python - 在 Python 中将 multiprocessing.Array 转换为 ctypes.c_void_p,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49086823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com