终止长命令并继续脚本

Terminating a long command and continue the script

我正在使用 Python 开发一个测试自动化工具,它可以打开 CMD 并通过它发送命令以听到设备发出的声音。根据该声音,用户可以单击是否有声音(即 pass/fail)。不幸的是,我传递的命令不断 运行ning。我想在(让我们说5秒)停止它,这是测试人员确定是否有声音的合适时间。

网上的大部分方法要么是使用multiprocessing exit,会导致应用程序完全关闭,这不是我想要的,因为用户确定声音存在后,程序需要运行 例如测试 LED 灯的另一个命令,或者他们使用 signal.SIGALRM,它可以与定时器一起使用,定时器会在一段时间后终止进程,但它不适用于 Windows。你觉得我该怎么做?如果您可以粘贴执行该操作的代码示例,那就太好了。谢谢!

也许您可以使用线程模块 (https://docs.python.org/3/library/threading.html) 中的 Timer。这是一个简单的例子:

import subprocess
import threading 

def terminate(process):
    print('terminating process',process)
    process.kill()
    print('done')
   

   
cmd = [<your command>, <your arguments>,...]


process = subprocess.Popen(
    cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
kill_timer = threading.Timer(1, terminate, [process])
try:
    kill_timer.start()
    stdout, stderr = process.communicate()
    print(stdout, stderr)
finally:
    kill_timer.cancel()

它应该可以在 windows 机器上运行。