Python:同时读取和命令不同设备的最佳方式是什么?

Python:同时读取和命令不同设备的最佳方式是什么?,python,multithreading,Python,Multithreading,我使用树莓Pi和BrickKPI来控制乐高电机。我想从游戏板上获取输入,比如logitech F310,并根据操纵杆输入运行电机。我发现从gamepad获取输入需要阻塞,比如get_gamepad()中事件的:,它会不断检查输入,除非获得输入,否则不会继续。此外,我的电机需要命令BrickPiUpdateValues()随时运行。所以我需要同时做两件事,但是游戏板阻止了马达的更新 在这个为我工作的简短程序中,我使用了线程,但是有没有更好的方法来完成这项任务,或者更好的方法来改进我的代码?此外,C

我使用树莓Pi和BrickKPI来控制乐高电机。我想从游戏板上获取输入,比如logitech F310,并根据操纵杆输入运行电机。我发现从gamepad获取输入需要阻塞,比如get_gamepad()中事件的
,它会不断检查输入,除非获得输入,否则不会继续。此外,我的电机需要命令
BrickPiUpdateValues()
随时运行。所以我需要同时做两件事,但是游戏板阻止了马达的更新

在这个为我工作的简短程序中,我使用了线程,但是有没有更好的方法来完成这项任务,或者更好的方法来改进我的代码?此外,Ctrl-C不会退出gamepad线程,即使我尝试使用
try
来允许键盘中断退出线程的好方法是什么?
join
没有很好地工作,因为它等待线程完成

from inputs import get_gamepad
from BrickPi import *
import threading

BrickPiSetup()
BrickPi.MotorEnable[PORT_A] = 1 #enable motor A

quitting = False #make the variable

def gamepad(): #the thread to read the gamepad
    while True:
        for event in get_gamepad(): #waits for input
            if event.code == "ABS_Y":
                BrickPi.MotorSpeed[PORT_A] = event.state / 128 #use joystick input to decide speed
            elif event.code == "BTN_MODE": #quit thread, program will quit as well
                global quitting
                quitting = True
                return

gamepad = threading.Thread(target = gamepad)
gamepad.start() #start reading the gamepad

while True:
    BrickPiUpdateValues() #actually run the motor
    if quitting == True: #full quit, triggered by mode button
        sys.exit()