我使用 wxPython 作为数据采集系统的前端,后端使用 PyDAQmx 连接到国家仪器卡。
当调用循环收集数据时,显然gui阻塞了,所以我使用threading.Thread将采集模块放在单独的线程中。然而,数据来得如此之快,以至于我们实际上需要多个内核,我相信 threading.Thread 做不到。
接下来我尝试使用 multiprocessing.Process & Queue 生成一个单独的进程来报告数据,非常简单
captureProcess = Process(target=acquire, args=(self.settings, self.queue,))
captureProcess.start()
数据被发送到队列中
queue.put( (i, j, c, aiData.value) )
并再次拿起
(scan, interval, count, ai) = queue.get()
现在奇怪的是,在我可以更新主 wx.Frame 上的一些 pyplot 图的意义上,gui 并没有阻塞,但是与它的任何交互(单击菜单等)都会立即导致程序变得无响应并崩溃. 有谁知道为什么会这样,或者任何解决方法?
非常感谢您的帮助。我在 Windows 7 上使用 anaconda。