设置命令执行的超时时间可以避免一些命令执行时间过长导致系统资源耗尽或者等待时间过长的问题。下面是Python 2.x如何设置命令执行的超时时间实例,包括两条示例说明。
方法一:使用signal库设置超时
我们可以使用Python的signal库来创建一个alarm信号,在指定时间后显示超时信号,并抛出一个alarm信号给进程。下面是代码示例:
import subprocess
import signal
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
def run_command(self, timeout):
def target():
self.process = subprocess.Popen(self.cmd, shell=True)
self.process.communicate()
timer = Timer(timeout, lambda: os.kill(self.process.pid, signal.SIGINT))
timer.start()
target()
timer.cancel()
command = Command("sleep 10; echo 'Hello, world!'")
command.run_command(5)
方法二:使用multiprocessing库设置超时
multiprocessing库也可以设置一个超时,它使用了Python的多进程来实现。当进程运行完成时,它就退出。下面是代码示例:
import subprocess
import multiprocessing
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
def run_command(self, timeout):
def target():
self.process = subprocess.Popen(self.cmd, shell=True)
self.process.communicate()
process = multiprocessing.Process(target=target)
process.start()
process.join(timeout)
if process.is_alive():
process.terminate()
process.join()
command = Command("sleep 10; echo 'Hello, world!'")
command.run_command(5)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 2.x如何设置命令执行的超时时间实例 - Python技术站