Python 使用Pykka和PyQt的基于参与者的GUI

Python 使用Pykka和PyQt的基于参与者的GUI,python,user-interface,pyqt,actor,pykka,Python,User Interface,Pyqt,Actor,Pykka,背景: 这确实是一个架构问题 我希望将当前用LabView编写的应用程序移植到Python。它是一个硬件控制和测量应用程序,基本上协调了一组异构硬件来运行测试 我正在考虑将Python应用程序基于Pykka,因为actor抽象似乎特别适合编排一系列并行硬件任务,LabView应用程序使用LV actor框架 该应用程序需要GUI—PyQt和PyQtGraph在这里非常有前景 问题 Pykka和PyQt是围绕事件循环构建的,对线程和线程间通信有不同的想法。我不确定如何构造代码,让Pykka参与者使

背景:

这确实是一个架构问题

我希望将当前用LabView编写的应用程序移植到Python。它是一个硬件控制和测量应用程序,基本上协调了一组异构硬件来运行测试

我正在考虑将Python应用程序基于Pykka,因为actor抽象似乎特别适合编排一系列并行硬件任务,LabView应用程序使用LV actor框架

该应用程序需要GUI—PyQt和PyQtGraph在这里非常有前景

问题

Pykka和PyQt是围绕事件循环构建的,对线程和线程间通信有不同的想法。我不确定如何构造代码,让Pykka参与者使用PyQt显示界面。我已经修改了Pykka事件循环以调用PyQt的processEvents,对Pykka.Actor进行了子类化,使其使用QProcess实现,并让Pykka Actor持有对独立线程的引用。我还没有得到令人满意的结果,这是因为我对这两个库都有些陌生

如何构建显示和管理PyQt GUI的Pykka actor


p、 欢迎回答“你疯了”的问题

虽然我没有用Pykka做过任何事情,但我做过一些控制异构硬件的事情。我们的方法是将硬件接口代码放入GUI生成的单独Python进程中,并使用ZMQ套接字与它们通信。因此,一个解决方案可能是让PyQt和Pykka事件循环在不同的进程中运行,并通过某种套接字在它们之间传递消息。嘿,谢谢你的评论,谢谢你给我指出你的labscript套件,它看起来非常有趣。我有你的论文,我会感兴趣地读的!不客气!我怀疑该套件本身对您是否有用,但希望底层的设计决策能为您的程序提供一些想法。我还对Pykka进行了更详细的介绍。我认为您可能可以让所有Pykka从Python线程开始,这将PyQt事件循环留给主线程。你有没有看到任何东西表明你不能从Python线程启动Pykka事件循环?