Я реализую шаблон «Производящий-потребляющий», используя модуль очереди из python3. Производитель использует байтовые потоки через websocket, а потребитель воспроизводит аудио в режиме реального времени. Поскольку они имеют почти одинаковую скорость производства / потребления данных, звук прерывистый, если очередь достигает размера 0.
Я хочу запустить потребителя, только если в очереди хотя бы n элементов (аналогично имея буфер во время воспроизведения видео). Как я могу реализовать это правильно? Удастся ли присвоить глобальные переменные условию гонки?
global queue
global warm_start = False
def produce():
queue.put(data)
if queue.qsize() > 5:
warm_start = True
def consume():
queue.get(data)
Thread(target=produce).start()
while True:
if warm_start:
Thread(target=consume).start()