为什么Python会导致速度减慢?
我已经用Python 3为我的RaspberryPi编写了一个简单的应用程序。我的rpi有一个新的安装,并且在开始开发之前我已经完成了所有更新。此应用程序是一个体育记分板,显示在LED矩阵上,并利用蓝牙游戏控制器和evdev模块进行输入控制 蓝牙输入工作得很好,100%响应,但如果断开连接,应用程序将崩溃,因为它无法再访问/dev/input/event0(这是gamepad输入) 我在代码中添加了try-Exception,它解决了崩溃问题,并允许在gamepad断开连接时代码继续。这带来了两个我需要帮助的新问题为什么Python会导致速度减慢?,python,evdev,Python,Evdev,我已经用Python 3为我的RaspberryPi编写了一个简单的应用程序。我的rpi有一个新的安装,并且在开始开发之前我已经完成了所有更新。此应用程序是一个体育记分板,显示在LED矩阵上,并利用蓝牙游戏控制器和evdev模块进行输入控制 蓝牙输入工作得很好,100%响应,但如果断开连接,应用程序将崩溃,因为它无法再访问/dev/input/event0(这是gamepad输入) 我在代码中添加了try-Exception,它解决了崩溃问题,并允许在gamepad断开连接时代码继续。这带来了两
while True:
#Gamepad read
try:
dev = InputDevice('/dev/input/event0')
gen = dev.read()
except Exception:
pass
#Gamepad functions
try:
for ev in gen:
if ev.type == ecodes.EV_KEY:
if ev.value == 1:
if ev.code == 23:
if home == 0:
pass
else:
home-=1
elif ev.code == 35:
home+=1
elif ev.code == 34:
away+=1
elif ev.code == 36:
if away==0:
pass
else:
away-=1
elif ev.code == 49:
stopwatch.reset()
start_clock == 300
elif ev.code == 32:
start_clock+=1
elif ev.code == 46:
start_clock-=1
elif ev.code == 33:
start_clock+=60
elif ev.code == 18:
start_clock-=60
elif ev.code == 24:
away=00
home=00
elif ev.code == 37:
_draw_ani()
elif ev.code == 50:
if stopwatch.running:
stopwatch.stop()
else:
stopwatch.start()
except IOError:
pass
通常,使用
try/except
进行检查的成本很高,特别是在引发异常时。这是一个很好的参考,可以在这方面帮助你
我认为使用if/else
条件将减少负载。为此,您应该首先检测引发异常的原因(您可以使用exception as error
并分析error
对象)。然后,您可以使用if/else
检查条件
关于您的代码,请将与
一起使用,而不是像这样直接打开和阅读:
with InputDevice('/dev/input/event0').read() as gen:
# do stuff with gen obj
这样您就不需要手动关闭obj。
现在,代码中的一个问题是试图在设备打开时读取设备。为什么每次迭代都要创建InputDevice对象?
除了异常之外是个坏主意,请捕获特定错误。