PyQt5 中 QProcess 的刷新缓冲区

Posted

技术标签:

【中文标题】PyQt5 中 QProcess 的刷新缓冲区【英文标题】:Flush buffer for QProcess in PyQt5 【发布时间】:2016-11-04 02:06:37 【问题描述】:

我有一个使用 PyQt5 框架的 Python 3.4 应用程序,但我遇到了问题。

我设置了一个 QProcess:

def listenToServer(self, MainWindow):
    self.ws = QtCore.QProcess(self)
    self.ws.start("python3 /home/pi/scara_panel/ws.py")
    self.ws.readyReadStandardOutput.connect(self.processServer)

它调用了这个函数:

def processServer(self):
    income = str(self.ws.readAllStandardOutput())
    print(income)

在桌面上,它工作正常。它流入应用程序。但是,当程序在 Raspberry Pi 上运行时,它只会在脚本 ws.py 终止时显示其读取的内容。

我读到这与 Python 中的输出缓冲有关。我尝试过添加 -u 标志之类的方法,但没有骰子。关于使用 readAllStandardOutput() 时如何清除此缓冲区的任何建议?

我已经尝试从 Disable output buffering 实现一些东西,但似乎没有任何东西可以解决问题。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可以通过

立即刷新输出
print(income, flush=True)

更多信息见How to flush output of Python print?

【讨论】:

以上是关于PyQt5 中 QProcess 的刷新缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

测试缓冲区是不是已在 R 中刷新

如何在 SQL 中刷新 PRINT 缓冲区?

PHP中刷新输出缓冲

和 或缓冲区刷新问题

刷新缓存区方式和刷新内存到磁盘方式总结。

如何限制管道(windows)的缓冲区大小?