Я не могу использовать многопроцессорность, мне нужна общая память между совершенно отдельными процессами python в Windows, использующими python 3. Я выяснил, как это сделать с помощью mmap, и это прекрасно работает ... когда я использую простые примитивные типы. Однако мне нужно передать более сложную информацию. Я нашел ctypes.Structure, и, похоже, это именно то, что мне нужно.
Я хочу создать массив ctypes.Structure и обновить отдельный элемент в этом массиве, записать его обратно в память, а также прочитать отдельный элемент.
import ctypes
import mmap
class Person(ctypes.Structure):
_fields_ = [
('name', ctypes.c_wchar * 10),
('age', ctypes.c_int)
]
if __name__ == '__main__':
num_people = 5
person = Person()
people = Person * num_people
mm_file = mmap.mmap(-1, ctypes.sizeof(people), access=mmap.ACCESS_WRITE, tagname="shmem")