私は 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でアナコンダを使用しています。