将Python Raspberry Pi应用程序移植到Twisted-如何处理轮询硬件的后台线程



我创建了一个小型设备,它使用一台小型树莓派单板电脑,让我可以远程给我的猫分发零食,并用网络摄像头监控它和周围的环境。\

该软件由一个Python模块组成,该模块托管一个网站(允许远程控制设备),一个管理硬件并运行简单状态机的"线程",以及一个通过网络摄像头捕捉图片并运行运动检测算法将捕捉时间限制在猫在的时间内的"线程。该网站托管一个HTML页面,其中包含一些使用jQuery对服务器进行Ajax回调的Javascript。

软件都在运行,但我发现网站在初始加载时返回页面的速度有时非常慢。我认为问题是由于GIL和Python简单的http服务器类设计,Python的一般单线程性质。

我对将应用程序移动到Twisted很感兴趣,但我不确定如何移植处理相机和硬件状态机的两个线程。两个线程都运行一个循环,有效地进行轮询,循环的每次迭代之间都有一个小延迟。

感谢

您可以使用LoopingCall(howto)在一定的时间间隔内调度重复的函数调用。这可能会完全取代您的轮询线程。

最新更新