在Raspberry Pi 4中经过500次循环后,while循环Python变慢

问题描述

我正在使用树莓派pi 4控制器(4GB内存)使用模拟传感器进行一个项目。我目前已连接9个传感器,我正在使用while循环进行无限循环。该代码非常简单,可以从传感器获取信息,并使用画布库在按下按钮时更改形状的颜色,而在不使用时保持不变。问题是经过500-550次循环后,速度越来越慢。随着周期数的增加,响应速度越来越慢。有人可以建议我如何解决这个问题吗?

我也是编码方面的菜鸟,所以如果我做错了,请指导我。我只为一个传感器编写代码,因为所有传感器都相同。

代码

from tkinter import *
import Rpi.GPIO as GPIO
import time
import tkinter as tk


GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
.
.
.
GPIO.setup(18,pull_up_down=GPIO.PUD_DOWN)

root=tk.Tk()
canvas = tk.Canvas(root,bg='white',width=500,height=500)
canvas.grid()

canvas.bind('<key>',lambda event: root.destroy() if (event.char == 'q') else 0)

while True:
    def sense1(on):
        square1= canvas.create_rectangle(5,5,105,width=0,fill='red' if on else 'green')
    .
    .
    .
    def sense9(on):
        square9= canvas.create_rectangle(235,235,335,fill='red' if on else 'green')

    global S1,...,S9

    if GPIO.input(7) == GPIO.HIGH:
        S1 = sense1(True)
    else:
        S1 = sense1(False)
    .
    .
    .
    if GPIO.input(18) == GPIO.HIGH:
        S9 = sense9(True)
    else:
        S9 = sense9(False)

    root.update_idletasks()
    root.update()




我为其他8个传感器编写了相同的代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)