import multiprocessing as mp
import time
from concurrent.futures import ProcessPoolExecutor
from multiprocessing import Queue, shared_memory

import tensorrt as trt

# multiprocessing.set_start_method('spawn')
Detweights = "/home/th/tuo_heng/dev/AIlib2/weights/river2/yolov5_2080Ti_fp16.engine"
start = time.time()
with open(Detweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
    model = runtime.deserialize_cuda_engine(f.read())
print(time.time() - start)
start1 = time.time()
Segweights = "/home/th/tuo_heng/dev/AIlib2/weights/river2/stdc_360X640_2080Ti_fp16.engine"
with open(Segweights, "rb") as f, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime:
    segmodel = runtime.deserialize_cuda_engine(f.read())
print(time.time() - start1)

def aa(buf):
    print(id(buf[0]), id(buf[1]))
shm = shared_memory.SharedMemory(name='share', create=True, size=10000)
buf = shm.buf
buf = model
buf[1] = segmodel
print(id(model), id(segmodel))
p = mp.Process(target=aa, args=(buf,))
p1 = mp.Process(target=aa, args=(buf,))
p.start()
p1.start()
time.sleep(10)

