【发布时间】:2018-07-18 02:56:02
【问题描述】:
我真的很想问这个问题,因为即使我阅读了文档并看到了一些示例,也无法真正理解如何使用它。
我有一个 Raspberry pi 3 型号 B,我交叉编译了 QT 5.6 和最新的 SIP 和 PyQt5 版本来开发 Python GUI 并使用 linux 帧缓冲区,一切都很成功,直到我运行了这部分代码
def refresh_data(self):
if self.setTarget == 1:
for x in range(0, self.targetnum):
self.target.append(getShadowInfo(x))
if float(self.target[x]) != self.datalist[x]:
if float(self.target[x]) > self.datalist[x]:
self.step.append(float(self.target[x]) - self.datalist[x])
self.negative.append(0)
else:
self.step.append(self.datalist[x] - float(self.target[x]))
self.negative.append(1)
else:
self.step.append(0)
self.negative.append(0)
self.step[x] *= 0.1
self.setTarget = 0
self.setTodaysDate(self.year, self.month, self.day, self.hour, self.min)
self.stopv += 10
for x in range(0, self.targetnum):
if self.step[x] != 0:
if self.negative[x] == 0:
self.datalist[x] += self.step[x]
else:
self.datalist[x] -= self.step[x]
self.setCustomParameter(x)
if all(i == 0 for i in self.step):
self.timer.stop()
if self.stopv >= 100:
self.timer.stop()
它从外部文件中读取数据并将其设置为目标,然后增加或减少实际值以在 python GUI 上更新它,这样看起来很流畅,但同时发生这种情况,性能变差并且它甚至执行代码的速度比应有的速度慢(由 50ms Qtimer 运行)。使用 htop,我注意到在运行这部分代码时,我的 RPi 只使用了四个内核中的一个,有人可以帮我多处理两个 for 循环吗?或者更好的 refresh_data 函数?
编辑!
setCustomParameter 函数
def setCustomParameter(self, intparameter):
if intparameter == 1:
#RPMMeter
self.hygrometer.setProperty("gaugeValue", round(self.datalist[1], 2))
self.label_5.setText(QCoreApplication.translate("MainWindow", "Engine Speed: " +
str(round(self.datalist[1], 2)) + " RPM"))
if intparameter == 2:
#Pressure
self.label.setText(QCoreApplication.translate("MainWindow",
str(round(self.datalist[2], 2)) + " KPa"))
self.progressBar.setProperty("value", self.datalist[2])
if intparameter == 3:
self.thermometer.setProperty("thermoValue", round(self.datalist[3], 2))
if intparameter == 4:
self.KW_Meter.setProperty("gaugeValue", round(self.datalist[4], 2))
if intparameter == 5:
self.Battery_bank_label.setText(QCoreApplication.translate("MainWindow",
"Battery Bank Voltage: " + str(round(self.datalist[5], 2)) + "V (MEDIUM)"))
【问题讨论】:
-
您能否将您的问题简化为对问题至关重要的点?
-
两个for循环,第一个,从另一个文件中读取信息并与实际信息进行比较,然后存储目标,第二个,设置目标增加或减少10%,我的树莓这样做变慢了,如果可能的话,如何多处理这两个 for 循环,如何多处理函数“refresh_data”
-
我实际上是在谈论问题本身。你可以编辑它。这里的许多人都是非常忙碌的专家,他们正在投入私人时间,最好将他们必须做的阅读量减少到最低限度。顺便说一句,这是您可以在 How to ask 部分找到的提示之一。
-
知道了,已经编辑了,我删除了所有无用的背景说明
标签: python python-3.x qt5 pyqt5 raspberry-pi3