データベースからデータを取得する 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