Python 2.x如何设置命令执行的超时时间实例

yipeiwu_com6年前Python基础

前言

在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)

总结

以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对【听图阁-专注于Python设计】的支持。

相关文章

Pytorch: 自定义网络层实例

自定义Autograd函数 对于浅层的网络,我们可以手动的书写前向传播和反向传播过程。但是当网络变得很大时,特别是在做深度学习时,网络结构变得复杂。前向传播和反向传播也随之变得复杂,手动...

对python中执行DOS命令的3种方法总结

1. 使用os.system("cmd") 特点是执行的时候程序会打出cmd在Linux上执行的信息。 import os os.system("ls") 2. 使用Popen...

Python的消息队列包SnakeMQ使用初探

一、关于snakemq的官方介绍 SnakeMQ的GitHub项目页:https://github.com/dsiroky/snakemq 1.纯python实现,跨平台 2.自动重连接...

Python语言快速上手学习方法

最近在学习Python,后面搞机器人项目需要用到,所以要快速上手,我使用的是PyCharm这个IDE,看起来就舒服,学习起来就有劲啦,作为一名有工作经验的老司机,我学习编程语言的方法不会...

python 制作自定义包并安装到系统目录的方法

python 制作自定义包并安装到系统目录的方法

python 中的包的概念跟c++中的namespace很相似,在大型的工程开发中,多个开发人员很容使用相同的函数名,为了避免相同函数名带来的问题,就引入了包的概念。 在看别人写的程序中...