No.665 (ランダム表示)
LTC Player は音源プレーヤー部がほぼ終わり。今後は LTC Generator の制御を組み込んでいきます。
LTC Generator の制御部はマルチスレッドを使って音楽プレーヤーと分ける必要があると思われます。LTC Generator との通信は最短で33msec(1/30秒)毎に行われますが、PysimpleGUI の sg.window.read() のタイムアウトを25msecにしているためにタイミングが間に合わない可能性があるからです。タイムアウトをもっと早くすれば良さそうなものですが、これ以上早くすると PysimpleGUI にとってよろしくないのです。あちらを立てればこちらが立たず状態ですが、トータルの処理量には無理は無く、あくまでタイミングの問題ですから、マルチスレッドにすればストレス無く動くと思います。
スレッド間通信には Queue を使えばいいでしょう。共有メモリや Pipe より通信は遅いのですが、List だろうが Tuple だろうがPythonで扱う変数をそのまま扱えるので便利です。通信するデータ量も僅かですから速度が気になることもないでしょう。ちなみに、Queue を送った後にほんの僅かな sleep() を入れると受け側のスレッドが動くまでの時間を短く出来る様です。
#Python
LTC Generator の制御部はマルチスレッドを使って音楽プレーヤーと分ける必要があると思われます。LTC Generator との通信は最短で33msec(1/30秒)毎に行われますが、PysimpleGUI の sg.window.read() のタイムアウトを25msecにしているためにタイミングが間に合わない可能性があるからです。タイムアウトをもっと早くすれば良さそうなものですが、これ以上早くすると PysimpleGUI にとってよろしくないのです。あちらを立てればこちらが立たず状態ですが、トータルの処理量には無理は無く、あくまでタイミングの問題ですから、マルチスレッドにすればストレス無く動くと思います。
スレッド間通信には Queue を使えばいいでしょう。共有メモリや Pipe より通信は遅いのですが、List だろうが Tuple だろうがPythonで扱う変数をそのまま扱えるので便利です。通信するデータ量も僅かですから速度が気になることもないでしょう。ちなみに、Queue を送った後にほんの僅かな sleep() を入れると受け側のスレッドが動くまでの時間を短く出来る様です。
#Python