我在 Win32 操作系统上运行 Python 2.7,但我希望编写独立于平台的代码。我正在尝试使用 Python 与我编写的 Java 程序进行实时交互,并且计算管道将是执行此操作的最佳方式。我的 Python 脚本将 Java 作为子进程调用。本质上,Java 是 GUI,Python 是后端。(我不想使用 Jython 或 wxPython,因为我只想依赖每种语言提供的标准库。)试图在两者之间建立通信是很糟糕的。我可以使用(父)Python 脚本向(子)Java 类发送一条消息
process.stdin.write(msg)
process.stdin.flush()
但读取 Java 的输出并没有奏效。我用
process.stdout.read()
但显然,如果没有什么可读的,这将永远阻塞。并且process.communicate()
是不受限制的,因为在子进程终止之前它不会做任何事情。根据我的研究,人们用来解决这个问题的常用方法是“使用线程”(尽管有人建议在编写时添加换行符——没有用),但是对于 Python 和线程来说,我没有想法会是什么样子。我试过查看标准库的subprocess.py
源代码,但没有帮助。至少有没有办法查看标准输出是否为空?如果没有,我该如何做到这一点?