0
要在一組文件上執行各種工具,我使用下面的Command類來調用它們。python子進程沒有終止
import subprocess
import threading
import logging
logger = logging.getLogger('root')
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
def run(self, timeout, logfile):
def target():
logger.info('Thread started')
logger.info('Command: %s' % self.cmd)
if logfile is None:
self.process = subprocess.Popen(self.cmd, shell=True)
else:
logger.info('logging to file %s' % logfile.name)
self.process = subprocess.Popen(self.cmd, shell=True, stdout=logfile)
self.process.communicate()
logger.info('Thread finished')
self.process.kill()
thread = threading.Thread(target=target)
# make it a daemon
thread.daemon = True
thread.start()
thread.join(timeout)
if thread.is_alive():
logger.warn('Terminating process')
thread.join()
self.process.kill()
logger.info('Thread Returncode: %d' % self.process.returncode)
return self.process.returncode
我面臨的問題是:
- 這些工具/命令我跑不正常終止,特別是在Python程序運行長(3小時以上)。
所以,我從你的鏈接的解決方案替代self.process.kill()我猜。 – Derping