Этот топи c задает несколько вопросов, но я думаю, что ни один из них не может решить мою проблему. Вот что у меня есть. У меня GUI написано на PyQt5. Существует функция с именем self.getValues
, эта функция имеет несколько условий if and else
, а затем записывает значения в текстовый файл. Время выполнения этой функции 0,0112. Эта функция прикреплена к Qtimer
, время ожидания которого каждые 10 мс. Если я рассчитываю, он должен записывать 80-90 значений каждую секунду. Но я получаю только 9-10 значений в секунду. Моя общая программа слишком велика, поэтому для ясности я опубликую соответствующую часть.
self.getValues
def geValues(self):
self.firstRun.append(1)
self.t = np.arange(1,len(self.firstRun)+1)
gyro2.updateGyroValues()
gyro2.updateHeadings()
xi,yi,xii,yii,zii,s1,s2 = gyro2.printHeadings()
xiii,yiii,ziii = compass.axes()
self.roll.append(xii)
self.rollDrift.append(s1)
self.pitch.append(yii)
self.pitchDrift.append(s2)
self.rollAccel.append(xi)
self.pitchAccel.append(yi)
self.timeTaken = self.timeStamp()
with open(self.fileName+'.txt','a') as file:
file.write(str(self.timeTaken)+','+str(xii)+','+str(yii)+','+str(zii)+'\n')
print(time.time()-st)
Qtimer
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
timer_1 = QtCore.QTimer()
timer_1.setInterval(1)
timer_1.timeout.connect(ui.getValues)
timer_1.start()
MainWindow.show()
sys.exit(app.exec_())
На мой взгляд, частота дискретизации зависит от этих двух функций. Если вы думаете, что я ошибаюсь, пожалуйста, дайте несколько предложений. Также я должен сказать, что моя программа не имеет никаких проблем, кроме скорости. Он работает и работает. Я буду признателен за любые подсказки / предложения.
Изменить: я использую несколько QTimer (), и каждый таймер привязан к отдельной функции. Я думал, что QTimer (ы) работают независимо (как потоки). Я попытался отключить все таймеры, кроме упомянутого выше, и это увеличило скорость обновления. Это означает, что я должен использовать Threading.