python程序运行超时_如何在python中超时运行jar程序

我使用下面的Command类来超时一个正在运行的命令。它可以很好地使用shell命令,但是当我使用命令java -jar将其传递给Command类来启动java程序时,它似乎没有终止java进程。请帮忙。在class Command(object):

cmd = None

process = None

status = None

output, error = '', ''

def __init__(self, cmd):

# if isinstance(cmd, basestring):

# cmd = shlex.split(cmd)

self.cmd = cmd

#self.process = None

def run(self, timeout, outputfile, errfile):

def target():

print 'Thread started'

try:

print self.cmd

open(outputfile, 'w').close()

open(errfile, 'w').close()

self.process = subprocess.Popen(self.cmd, shell=True, stdout = file(outputfile, 'w+'), stderr = file(errfile, 'w+')) #

(self.output, self.error) = self.process.communicate() #

self.status = self.process.returncode

print self.output #"Out:'%s'" %

print self.error #"Err:'%s'" %

print 'Thread finished'

except:

self.error = traceback.format_exc()

self.status = -1

print self.error

thread = threading.Thread(target=target)

thread.start()

thread.join(timeout)

if thread.is_alive():

print 'Terminating process'

self.process.kill() #terminate

thread.join()

print self.status

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值