Многопроцессорная обработка | многопоточность ffmpeg в python

#python #ffmpeg #wsgi #python-multithreading #python-multiprocessing

#python #ffmpeg #wsgi #python-многопоточность #python-многопроцессорная обработка

Вопрос:

Я разрабатываю скрипт python WSGI для взаимодействия с HDHomeRun Prime. В идеальном мире он будет передавать значения URI в виде команд в FFMPEG и отображать результирующий поток в браузере. У меня части «показать содержимое в браузере» и «передать инструкции в FFMPEG» работают нормально, но у меня они не работают одновременно.

1) Учитывая, что это промежуточное программное обеспечение используется для перекодирования MPEG-2 в h.264, имеет ли смысл использовать многопроцессорную или многопоточную обработку для запуска и остановки соответствующих процессов?

2) Если скрипт WSGI выполняет посредничество при инициировании каналов FFMPEG (если входной канал еще не передан) и подключает клиентов к связанным потокам FFServer, означает ли это, что мне нужно будет использовать какой-то пул для отслеживания действий промежуточного программного обеспечения?

Ответ №1:

Я не совсем понимаю весь ваш процесс, но ИМО, с которого вы должны начать multithreading , поскольку его намного проще настроить (переменные разделяются, как обычно, в Python). ЕСЛИ это не соответствует вашим требованиям (например, недостаточно быстро), вы можете перейти к multiprocessing , но это увеличит сложность, если вы никогда не использовали multiprocessing Python (нет связи между process , необходимость использования queues или общие переменные).

Настройте свои потоки :

 import threading 
a = threading.Thread(target = func, args=(vars)) 
a.start() 
  

Хороший учебник здесь.

Вы также должны знать о python’s GIL, чтобы понять, что вы делаете в потоковой / многопроцессорной обработке .

Комментарии:

1. Спасибо, Гарри! Извините за медленный ответ. Мне нравится предоставленный вами учебник, и я посмотрю, смогу ли я реализовать его в выходные.