python 启动并监视另一个进程

需要使用这个的情景为,假设我们接受了客户的一段代码,但是我希望这段代码只是运行2秒就结束了,如果过了2秒还没有结束就认为这段代码有问题,直接kill这个进程。

下面是python的代码, 在这段代码中,我们启用了一个死循环进程,2秒后将这个进程杀死。


from multiprocessing import Process
def deadlock(start):

  a = 0

  cnt = 0

  while(a == 0):

    print ‘cnt %d’ %cnt

    cnt=cnt + 1
mstart=0

p = Process(target=deadlock, args=(mstart,))

p.start()

p.join(timeout=2)
if p.is_alive():

    print ‘Terminating process’

    p.terminate()

    p.join()
print ‘we are done’

注意这里的p.join的用法,这个函数是指示主进程等待该进程结束。而加了timeout参数表示只等待给定时间。过了给定时间,p.join就返回主进程。此时,主进程若发现子进程依然在运行,则杀掉它。



本文地址: http://www.bagualu.net/wordpress/archives/3961 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注