2

python2.7とwxpython2.8を使用して、ファイルのリストで長いループ(数時間)を実行するアプリケーションを作成しています。

ボタンを押すとループが中断されるようにプログラムしましたが、アプリケーションを起動した時点でボタンがフリーズし、ループが終了するまで対話できません。また、最大1秒の短いスリープ時間を追加しようとしましたtime.sleepが、これは速度に非常に悪いため、問題は解決しません。

このループを「バックグラウンドで」実行して、ユーザーが引き続きいくつかのパラメーターを変更し、さらに重要なことにループを停止できるようにする方法はありますか?

ループについては、多くのリソースを必要とせず、時間がかかるだけなので、なぜフリーズするのかわかりません。

助けてくれてありがとう!

4

1 に答える 1

1

このタイプの問題の標準的な解決策でスレッドを使用します。Processes and Events の下の wxPython デモ | Threads には、スレッドを使用した実用的な例があります。

wxPython (および他のほとんどの gui) からスレッドを実行する場合、いくつかの問題があるため、例のコメントを読んだり、何が起こっているのかを理解するために wiki を読んだりすることをお勧めします。特に、wxPython は以下から実行する必要があります。したがって、別のスレッドでファイル処理を行い、ファイル処理は wx.PostEvent や wx.CallAfter などを使用してメイン スレッドと通信する必要があります。

于 2012-09-18T03:58:29.277 に答える