1

データベースからデータを取得する ui スレッドから関数を呼び出そうとしています。これには多くの時間がかかるため、この間 UI の応答性を維持しようとしています。次のコードを使用しています。

        def onHit(self,evt):
            busy = PBI.PyBusyInfo(message, parent=self.Form.resultPage, title="Really Busy");
            wx.Yield();
            executor = futures.ProcessPoolExecutor(max_workers=1)
            ##executor = futures.ThreadPoolExecutor(max_workers=1)
            future = executor.submit(self.returnData);
            future.add_done_callback(self.onComplete);
        def onComplete(self,futures):
            #build a grid from futures.result()
            print future.result()
            #del busy

だから私は2つの問題があります。最初にこれを実行しようとすると、酸洗エラーが表示されます。次に、2 番目の関数にアクセスできない場合、2 番目の関数でビジー状態を削除するにはどうすればよいですか? それをグローバルに宣言するのは理にかなっていますか、それとももっと簡単な方法はありますか? SQLデータベースからデータを取得した後、UIの応答性を維持し、UIを更新する最良の方法は何ですか? 進行状況ダイアログも使用しません。

PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "D:\Python\lib\multiprocessing\forking.py", line 373, in main
    prepare(preparation_data)
  File "D:\Python\lib\multiprocessing\forking.py", line 488, in prepare
    '__parents_main__', file, path_name, etc
4

0 に答える 0