2023/5/5(金)

人生で2番目くらいに真面目にPythonをいじくり倒したと思う。tkinterのGUIとwebsocketsによる通信を合わせるのはなかなか面倒だった。合わせるのというか、合わせた上で正常に終了させるのが面倒。

tkinterの実装の都合上どうしてもtkinterと通信は別スレッドにしなければならない。websocketsによる通信はasyncioなので、非同期処理による並行化とスレッドによる並列化が両方行われる。その間で通信するのだからたまらない。tkinterが非同期で扱えれば良いのだが。

guiと通信の間のやり取りのためにasyncio.Eventを使っていたのだが、どうやら別スレッドでasyncio.Eventを使うのはアウトらしい。GUIが止まったという情報をwebsocketsの方の処理で知って落としたいのだが、どうすればいいんだこれ。

Categories: