这是我的代码,我在stdout内容包含'error'或'completed'之后手动停止子进程。如何停止subprocess.run()方法创建的进程。
软件LATO是由其他人创建的,它永远不会退出。
我看到了使用os.kill
来杀死子进程的答案,但由于我使用了pydoc推荐的run
,因此我无法获得子进程pid。
def lato_convert(filename):
''' Use lato convert bin data to csv data. '''
try:
subprocess.run([LATO,
'-sourceDirectory={}'.format(UPD_DIRECTORY),
'-outputDirectory={}'.format(DATA_DIRECTORY),
'-logFile={}'.format(LOG_DIRECTORY +'lato.log')]
,check=True).check_returncode()
except Exception as e:
mylogger.get_my_logger(os.path.basename(__file__), LOG_FILENAME).error('lato convert error: {}'.format(e))