Как предотвратить прерывание потока в Python - PullRequest
0 голосов
/ 07 июня 2018

В моей программе несколько потоков, и одна из них читает с двух камер с помощью OpenCV.Я хочу гарантировать, что поток камеры не прерывается во время захвата кадров с двух камер, так что кадры захватываются в одно и то же время.Как я могу предотвратить прерывание потока во время чтения фреймов?

Чтобы лучше объяснить мой вопрос, я привел пример кода:

import cv2
import time
cap0 = cv2.VideoCapture(0) #setup first camera
cap1 = cv2.VideoCapture(1) #setup second camera

while True:
  disable_interrupts() #prevent task switching to other threads
  cap0.grab() #capture a frame
  cap1.grab() #capture a frame
  timestamp = time.time() #the approximate time the frames were captured
  enable_interrupts() #allow task switching to continue

  ret, frame0 = cap0.retrieve() #get the previously "grabbed" frame for the first camera
  ret, frame1 = cap1.retrieve() #get the previously "grabbed" frame for the second camera

Я используюработать с микроконтроллерами без ОС, и вы часто переключаете задачи, используя прерывания.В этом случае это легко, потому что вы просто отключаете некоторые / все прерывания, выполняете критический код и затем повторно активируете прерывания.Есть ли что-то эквивалентное в мире операционных систем?Или OpenCV предлагает что-то для захвата нескольких камер одновременно?Я использую QThread (PyQt4), поэтому QThread предлагает что-то подобное?

...