Python2.x设置命令执行的超时时间

在Python2.x中的几个用来执行命令行的库或函数在执行命令是均不能设置一个命令执行的超时时间,用来在命令执行时间超时时终端这个命令的执行,这个功能在3.x(?)中解决了,但是在2.x还是只能自己实现。

下面就简单实现了一个版本:

import subprocess
from threading import Timer


def call(args, timeout):
    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    timer = Timer(timeout, lambda process: process.kill(), [p])

    try:
        timer.start()
        stdout, stderr = p.communicate()
        return_code = p.returncode
        return (stdout, stderr, return_code)
    finally:
        timer.cancel()

测试

print call(['hostname'], 2)
print call(['ping', 'www.baidu.com'], 2)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

IntelliJ系列 ④ | IDEA 之 Tomcat配置全过程

1.3K3
来自专栏coding

vue.js自定义指令

1792
来自专栏知无涯

基于百度云分享,纯JS生成二维码

41510
来自专栏数据结构笔记

Django搭建博客(三):文章的储存和页面的渲染

前面我们把博客页面的设计给出来了,但是现在的页面只有框架,我们还需要一些内容来填充这个框架。

1222
来自专栏Sublime

Sublime3 的使用

740
来自专栏ml

cmd界面的编码如何改为utf8

在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令...

3106
来自专栏BeJavaGod

FreeMarker静态模板结合spring展示

freemarker可以脱离web使用 前一篇文章使用了普通的方法 这回说说结合spring pom额外引入这个jar包 <groupId>org.spring...

2856
来自专栏ionic3+

Cordova插件扩展——Themeablebrowser自拷贝图片

插件全名叫: cordova-plugin-themeablebrowser 这个插件会弹出一个浏览器窗口,打开外部网页,功能比较强大,能自定义导航工具栏、...

1375
来自专栏运维

怎样把ESXI5.0导出的OVF模板导入到ESXI4.X中

怎样把ESXI5.0导出的OVF模板导入到ESXI4.X中 1,用workstation8或9打开ovf虚拟机模板,即建立了虚拟机 2,右击相应虚拟机---...

2302
来自专栏C/C++基础

Linux命令(20)——cat命令

(4)把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里。

823

扫码关注云+社区

领取腾讯云代金券