Не получается отдать данные в поток на Python

У меня есть 3 файла. Первый отвечает за вебкамеру и выводит изображение, так же запускает поток и записывает данные в глобальную переменную.

from threading import Thread
import cv2
from pushData import push
from data import *


def webcam():
    global gFrame
    cap = cv2.VideoCapture(0)

    #Запуск потока
    p1 = Thread(target=push, args=(getFrame,))
    p1.start()

    while True:
        # Брать изображение с камеры
        ret, frame = cap.read()

        #Копирование фрейма
        gFrame = frame.copy()

        #Вывод картинки
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    webcam()

Есть файл просто для хранения информации

#Место для хранения
gFrame = []

def getFrame():
    global gFrame
    return gFrame

И вся проблема идет в потоке. Когда я пытаюсь взять данные из переменных то они пустые. То есть print(getFrame()) выводит пустой массив

import time

def push(getFrame):

    while True:
        print()
        #Вывод фрейма
        print(getFrame())
        time.sleep(1)
        print("===================")

Ответы (1 шт):

Автор решения: alex
from threading import Thread
import cv2
from pushData import push
from data import *


def webcam():
    cap = cv2.VideoCapture(0)

    #Запуск потока
    p1 = Thread(target=push, args=(getFrame,))
    p1.start()

    while True:
        # Брать изображение с камеры
        ret, frame = cap.read()

        #Копирование фрейма
        gFrame[0] = frame.copy()

        #Вывод картинки
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    webcam()

список это изменяемый тип данных. и global убери везде.

#Место для хранения
gFrame = [None]

def getFrame():
    return gFrame
→ Ссылка