我有一个用 Python 编写的项目,它将发送硬件(Phidgets)命令。因为我将与多个硬件组件交互,所以我需要同时运行多个循环。
我研究了 Pythonmultiprocessing
模块,但事实证明,硬件一次只能由一个进程控制,所以我所有的循环都需要在同一个进程中运行。
截至目前,我已经能够通过Tk()
循环完成我的任务,但实际上并未使用任何 GUI 工具。例如:
from Tk import tk
class hardwareCommand:
def __init__(self):
# Define Tk object
self.root = tk()
# open the hardware, set up self. variables, call the other functions
self.hardwareLoop()
self.UDPListenLoop()
self.eventListenLoop()
# start the Tk loop
self.root.mainloop()
def hardwareLoop(self):
# Timed processing with the hardware
setHardwareState(self.state)
self.root.after(100,self.hardwareLoop)
def UDPListenLoop(self):
# Listen for commands from UDP, call appropriate functions
self.state = updateState(self.state)
self.root.after(2000,self.UDPListenLoop)
def eventListenLoop(self,event):
if event == importantEvent:
self.state = updateState(self.event.state)
self.root.after(2000,self.eventListenLoop)
hardwareCommand()
所以基本上,定义循环的唯一原因Tk()
是我可以root.after()
在那些需要同时循环的函数中调用命令。
这行得通,但是有更好/更蟒蛇的方法吗?我也想知道这种方法是否会导致不必要的计算开销(我不是计算机科学专家)。
谢谢!