Почему при передачи кадров подпроцессу питон сжирает всю память? Причем если передавать например счетчик i то утечки нет.
from multiprocessing import Process, Queue
from pympler.tracker import SummaryTracker
import cv2
def worker(inputQueue, outputQueue):
while True:
if not inputQueue.empty():
frame = inputQueue.get()
inputQueue = Queue(maxsize=1)
outputQueue = Queue(maxsize=1)
vs = cv2.VideoCapture(0)
p = Process(target=worker, args=(inputQueue, outputQueue))
p.daemon = True
p.start()
i = 0
tracker = SummaryTracker()
while True:
ret, frame = vs.read()
if ret == True:
i += 1
if inputQueue.empty():
inputQueue.put(frame) # <--утечка тут!
cv2.imshow("Camera", frame)
if i == 100:
tracker.print_diff()
i = 0
if cv2.waitKey(1) & 0xFF == ord("q"):
break
p.terminate()
vs.release()
cv2.destroyAllWindows()
Спасибо!