问题
使用Java调用Python脚本执行时遇到hang住,导致后续程序无法继续执行。一共遇到过2次,两次原理是一样的,但是出现的方式不同
- 屏幕打印日志,而java调用时未及时消费,导致缓冲区被写满
- python脚本报很多warning错误,打印到屏幕上,同样导致缓冲区被写满
解决办法
- 针对屏幕打印日志的问题,将屏幕日志关闭
streamHandler = logging.StreamHandler()
streamHandler.setFormatter(formatter)
loger.addHandler(streamHandler)
loger.setLevel(logging.INFO)
- 针对python脚本很多warning错误,将所有warning忽略掉
from warnings import simplefilter
simplefilter(action="ignore")
# 也可以选择忽略Warning的分类
# simplefilter(action="ignore", category=FutureWarning)
- java及时消费python输出信息,避免缓冲区堵塞,详细代码可参考Java Runtime.getRuntime().exec调用python程序问题总结