Я хотел запустить функцию параллельно с основной программой в Python. Предположим, у меня есть функция распознавания речи. Я хочу, чтобы он запустился в фоновом режиме и прервал основную программу, если вы услышите определенное высказывание. Но в то же время у меня есть другие задачи. Таким образом, распознавание речи должно работать как отдельный процесс и может быть вызвано функцией при прослушивании команды.Выполнение параллельных функций в Python
Я попытался питон MultiProcessing модуля, в нить модуля и продевал модуль. Но все это требовало от меня ждать завершения процесса или потока. Я хочу что-то, что позволит мне запускать функции в фоновом режиме. Они должны вызывать некоторую функцию обратного вызова, если происходит определенное событие.
Надеюсь, я найду эффективный способ сделать это.
Я пробовал резьба модуль. Код выглядел следующим образом (псевдокод):
def detected(text):
commands = 'a list of commands'
if text in commands:
#call some function according to the command
def speech_recognition():
#while True:
#If speech detected:
#record it
#process it and covert it to text
#if text is a specified command:
#call the detected(text) function with the recognized text as argument
import threading as t
pr = t.Thread(target=speech_recognition)
pr.start()
#from here starts the main program that does some other functions that
#doesn't need to be mentioned here.
Но это не работает. Распознавание речи выполняется в течение нескольких секунд, а затем просто завершается. Исключений нет, никаких систем не выходит, ничего. Это то же самое, когда я пробую многопроцессорную обработку и thread.
Что вы подразумеваете, модуль потоковой передачи требует, чтобы вы дождались окончания потока? Вам остается только подождать, если вы вызовете 'join()' в потоке, но если вы этого не сделаете, вы можете сделать другие вещи в основном потоке. –
Я отредактировал сообщение. Просто взгляните. – freeMinder