我使用的wxPython作爲一個數據採集系統的前端,使用PyDAQmx後端接口的民族樂器卡。多與wxPython的是反應遲鈍
當循環調用來收集數據,顯然貴塊,所以我用threading.Thread把採集模塊在一個單獨的線程。但是,數據傳入速度非常快,以至於我們實際上需要多個內核,而我認爲這些內核是線程化的。線程無法做到這一點。
我下試圖使用產卵multiprocessing.Process &隊列將數據報告回,很簡單地作爲
captureProcess = Process(target=acquire, args=(self.settings, self.queue,))
captureProcess.start()
的數據被向下發送的隊列
queue.put((i, j, c, aiData.value))
和拾取單獨的進程再與
(scan, interval, count, ai) = queue.get()
現在奇怪位是GUI不在這個意義上阻止我可以更新主wx.Frame一些pyplot圖,但與它的互動(點擊菜單等),立即導致程序無響應和崩潰。有誰知道這是爲什麼,或者任何解決方法?
非常感謝您的幫助。我使用的Windows 7
嘗試啓動過程的早期階段 - 建立wxPython的之前。推向數據收集過程的狀態越少越好。 – tdelaney
你有沒有嘗試在循環中併入wx.Yield()?這將允許GUI更新,然後返回到循環。你可能不需要使用它來將它解出來,但是我又沒有使用anaconda,所以我不確定它會做什麼。 –
感謝您的幫助。我無法儘早啓動此過程,因爲它需要在用戶開始數據捕獲時啓動。由於循環是在單獨的過程中,對於wx.Yield()我需要傳遞當前應用程序的副本,但不能被醃製,因此它看起來不起作用。更多的建議表示讚賞。 –