1

さて、cherrypy で書かれたアプリケーションがあり、そのための wxpython GUI を構築したいと考えています。問題は、両方のモジュールがイベント処理にクローズ ループを使用していることです。つまり、一方が実行されている間、もう一方がロックされます。

アドバイスを求めたところ、ストック エントリポイント (cherrypy の場合は quickloop()、wx の場合は MainLoop()) を使用するのではなく、2 つのイベント ループをマージすることが提案されました。

問題は、これを行う方法がわからないことです。アドバイスをいただければ幸いです。

4

2 に答える 2

6

あなたはすでに同じ質問をここで尋ねました: cherrypy と wxpython、そして私はあなたがそこで見つけようとしている最高の応答をあなたに与えました。それは投票され、あなたは承認したようです. なんでまた聞くの?

于 2010-01-13T16:03:49.660 に答える
0

チェリーピーの場合、ソースがあります。コードを調べて、このコードをWXquickloop()の とマージしてみてください。MainLoop()

両方のループは、おそらく次のようになります。

while (true) {
    if (pendingEvents()) processEvents ();
    else waitForEvents ();
}

待機中の 2 つの呼び出しを 1 つにマージする方法を見つける必要があります (いずれかのイベント ソースに保留中のイベントがある場合、コードは続行されます)。WX についてはDispatch()、 、Pending()および を参照してくださいProcessIdle()

または、そこにあるすべてのcherrypyイベントを見てwxIdleEventドキュメントを参照)、処理することもできます。

別の解決策は、2 つのループを異なるスレッドで実行することです。この場合、cherrypy コードから WX メソッドを呼び出すことはできず、その逆も同様です。これを解決するには、どのメソッドを呼び出すかのすべての情報を含むメッセージを他のスレッドに送信する方法を見つける必要があります。これにより、WX メソッドが WX スレッドで実行され、cherrypy メソッドが cherrypy スレッドで実行されるようになります。

于 2010-01-13T08:14:26.753 に答える