使用 os.system 函数时设置超时

新手上路,请多包涵

首先,我想说我刚开始学习python,我想在我的python脚本中执行maven命令(见下面的部分代码)

 os.system("mvn surefire:test")

但不幸的是,有时这个命令会超时,所以我想知道如何设置超时阈值来控制这个命令。

也就是说,如果执行时间超过X秒,程序将跳过该命令

更重要的是,其他有用的解决方案可以解决我的问题吗?提前致谢!

原文由 Yongfeng 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

请改用 subprocess 模块。通过使用列表并坚持使用默认值 shell=False ,我们可以在超时时终止进程。

 p = subprocess.Popen(['mvn', 'surfire:test'])
try:
    p.wait(my_timeout)
except subprocess.TimeoutExpired:
    p.kill()

原文由 tdelaney 发布,翻译遵循 CC BY-SA 4.0 许可协议

此外,您可以在终端超时中使用:

这样做:

import os

os.system('timeout 5s [Type Command Here]')

此外,您可以使用 s、m、h、d 表示秒、分钟、小时、天。您可以向命令发送不同的信号。如果您想了解更多信息,请访问: https ://linuxize.com/post/timeout-command-in-linux/

原文由 WitBlack 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进