У меня есть скрипт, который отображает меню, которое предлагает опции для записи и загрузки прямых трансляций и видео.Меню настроено так:
Menu
1) Record
2) Download
3) ...
Choose your option: ...
Скрипт вызывает несколько функций, расположенных в отдельных скриптах, для запроса, анализа, записи или загрузки потоков.Проблема в том, что при вызове функции записи subprocess.Popen блокирует мое меню до тех пор, пока не закончится поток.Я полагаю, это связано с функцией, требующей все stdin?Как предотвратить блокировку меню?
Я пытался использовать опцию подпроцесса stdin=open(os.devnull)
.Это не заблокирует меню, но приведет к процессу зомби после завершения потока.Использование потоков, таких как Thread(target=record.record,args=[json_data,ua_ffmpeg,username,id]).start()
, не работает.
menu.py
import functions.record as record
...
record.record(json_data,ua_ffmpeg,username,id)
...
record.py
def record(json_data,ua_ffmpeg,username,id):
...
subprocess.Popen('ffmpeg -icy 0 -headers "%s" -i %s -c copy -loglevel quiet videos/%s/livestreams/%s.ts' % (ua_ffmpeg, hls_url, username, id), shell=True)
Заранее спасибо.