python-3.x 如何实现用户交互的双输入法

i34xakig  于 2023-03-09  发布在  Python
关注(0)|答案(1)|浏览(142)

我目前正在做一个项目,要求用户使用基于文本的方法或基于语音的方法来提供输入。我正在努力弄清楚如何同时运行两个函数,以识别用户选择了哪种输入法。
对于基于文本的输入,用户只需按下键盘上的任意键,而对于基于语音的输入,用户需要对着麦克风说出一个特定的热门词汇(例如“activate”)。我尝试过使用循环线程,但在有效实现它时遇到了问题。
下面是一个链接,指向我尝试在此任务中使用的代码:https://wtools.io/paste-code/bKjC

wgx48brx

wgx48brx1#

在用户交互中实现双输入法的一种方法是使用多处理而不是Python中的线程,这是因为Python中的全局解释器锁(Global Interpreter Lock,GIL)限制了多个线程同时执行。
Python中的全局解释器锁(Global Interpreter Lock,GIL)确保了一次只有一个线程可以执行Python字节码。这会限制多线程Python程序的性能,尤其是CPU密集型程序。为了充分利用多个CPU内核,可以使用多进程编程来代替多线程编程。
下面是我使用多处理所做的一个示例实现:

import multiprocessing as mp

def input_method_1():
    while True:
        # Implement the first input method here
        # For example, read input from a Keyboard and then stop

def input_method_2():
    while True:
        # Implement the second input method here
        # For example, read input from an Audio Source and then stop

if __name__ == '__main__':
    # Create two processes, one for each input method
    p1 = mp.Process(target=input_method_1)
    p2 = mp.Process(target=input_method_2)

    # Start both processes
    p1.start()
    p2.start()

   while p1.is_alive() and p2.is_alive():
        continue

   for p in multiprocessing.active_children():
        p.terminate()

下面是指向前一个文件的新代码的链接:https://wtools.io/paste-code/bKrp

相关问题