from multiprocessing import Value
from multiprocessing.sharedctypes import RawArray
from ctypes import addressof, c_char
array = RawArray(c_char, b'shirt')
array_length = array._length_
result_address = Value('i', 0)
result_address.value = addressof(array)
print((array._type_*array_length).from_address(result_address.value).value)
在一个过程中,我将类型result_address
的{{1}}传递给子进程,子进程然后在共享内存中创建一个数组,并将其地址写回multiprocessing.Value
。基本上我想与父进程共享在子进程中创建的字节串而不使用result_address
,因为它只是一个字节串,它可以(?)在共享内存中管理。
此multiprocessing.Manager
也可能再次在内存中创建数组,如何在不创建另一个数组的情况下读取python字符串中的c数组?
代码甚至不能在单个进程中生成并生成(array._type_*array_length).from_address()
。