multiprocessing.shared_memory Python3.8新特性
官方文档
import numpy as np
from multiprocessing import shared_memory
from multiprocessing import Process
from multiprocessing.managers import SharedMemoryManager
def change(name):
a = np.array([0, 0, 0, 0, 0, 0])
existing_shm = shared_memory.SharedMemory(name=name)
b = np.ndarray((6,), dtype=np.int64, buffer=existing_shm.buf)
b[:] = a[:]
print("changed")
def show(name):
existing_shm = shared_memory.SharedMemory(name=name)
b = np.ndarray((6,), dtype=np.int64, buffer=existing_shm.buf)
print(b)
if __name__ == '__main__':
smm = SharedMemoryManager()
smm.start()
a = np.array([1, 1, 2, 3, 5, 8])
sm = smm.SharedMemory(a.nbytes)
b = np.ndarray(a.shape, dtype=a.dtype, buffer=sm.buf)
b[:] = a[:]
print(b)
p1 = Process(target=change, args=(sm.name,))
p2 = Process(target=show, args=(sm.name,))
p1.start()
p1.join()
print(b)