终止长命令并继续脚本
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 机器上运行。
我正在使用 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 机器上运行。