質問編集履歴
3
アドバイス頂いた後のコード
test
CHANGED
File without changes
|
test
CHANGED
@@ -621,3 +621,87 @@
|
|
621
621
|
multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
|
622
622
|
|
623
623
|
![イメージ説明](47f4eab8e89f0b60f80cd380bf6ae0e8.png)
|
624
|
+
|
625
|
+
|
626
|
+
|
627
|
+
### アドバイス頂いた直後に実践したコード
|
628
|
+
|
629
|
+
```python
|
630
|
+
|
631
|
+
# 先頭に
|
632
|
+
|
633
|
+
# ファイルの先頭で
|
634
|
+
|
635
|
+
import logging
|
636
|
+
|
637
|
+
logger = logging.getLogger(__name__)
|
638
|
+
|
639
|
+
|
640
|
+
|
641
|
+
# ログにスレッド名を表示&ロギングを有効にする設定
|
642
|
+
|
643
|
+
# if __name__ == "__main__": 内に置きたいが、なければファイル先頭でもok
|
644
|
+
|
645
|
+
logging.basicConfig(level=logging.DEBUG, format="[%(threadName)-10s][%(levelname)-8s] %(message)s")
|
646
|
+
|
647
|
+
|
648
|
+
|
649
|
+
# logger モジュールは、スレッドセーフなので、どこからでも安全に呼び出せます。
|
650
|
+
|
651
|
+
# print の代わりに利用 logger.info, logger.debug, logger.error, 等
|
652
|
+
|
653
|
+
fn = "futta-fly.wav"
|
654
|
+
|
655
|
+
logger.debug(f"debug message: {fn=}") # f-string で変数 fn を表示
|
656
|
+
|
657
|
+
|
658
|
+
|
659
|
+
#~略~
|
660
|
+
|
661
|
+
|
662
|
+
|
663
|
+
def play_audio():
|
664
|
+
|
665
|
+
# TODO: リソース作成・解放はスレッド側で完結する
|
666
|
+
|
667
|
+
wf = wave.open(filename, "r")
|
668
|
+
|
669
|
+
# ストリームを開く
|
670
|
+
|
671
|
+
p = pyaudio.PyAudio()
|
672
|
+
|
673
|
+
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
|
674
|
+
|
675
|
+
channels=wf.getnchannels(),
|
676
|
+
|
677
|
+
rate=wf.getframerate(),
|
678
|
+
|
679
|
+
output=True)
|
680
|
+
|
681
|
+
|
682
|
+
|
683
|
+
# 音声を再生
|
684
|
+
|
685
|
+
data = wf.readframes(CHUNK)
|
686
|
+
|
687
|
+
while True:
|
688
|
+
|
689
|
+
stream.write(data)
|
690
|
+
|
691
|
+
redraw()
|
692
|
+
|
693
|
+
|
694
|
+
|
695
|
+
elif event in '-do-':
|
696
|
+
|
697
|
+
# ボタンを押した時に開始
|
698
|
+
|
699
|
+
thread = threading.Thread(target=play_audio, args=(data_que,ui_que), daemon=True)
|
700
|
+
|
701
|
+
thread.start()
|
702
|
+
|
703
|
+
```
|
704
|
+
|
705
|
+
doボタンを押下しても下記コンソールのみですぐウィンドウが閉じてしまいました。
|
706
|
+
|
707
|
+
![イメージ説明](7cea8bb5616aeb13c2da03f2651efd0f.png)
|
2
アドバイス実践①追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -605,3 +605,19 @@
|
|
605
605
|
PySimpleGUI
|
606
606
|
|
607
607
|
Python3.8.8
|
608
|
+
|
609
|
+
|
610
|
+
|
611
|
+
### アドバイス直後に実装したコード①
|
612
|
+
|
613
|
+
|
614
|
+
|
615
|
+
先ほどこちらにコード記載したところ18000文字となってしまい8000文字オーバーになってしまいました。
|
616
|
+
|
617
|
+
コメントに記載してみます。
|
618
|
+
|
619
|
+
|
620
|
+
|
621
|
+
multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
|
622
|
+
|
623
|
+
![イメージ説明](47f4eab8e89f0b60f80cd380bf6ae0e8.png)
|
1
リンク切れ修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
①[PySimpleGUIを使用したmultithreadの作り方](https://qiita.com/Gyutan/items/f41f39bc3df7d788ffc5)
|
14
14
|
|
15
|
-
②[スペクトラム波形作成
|
16
|
-
|
17
|
-
](https://teratail.com/questions/289920)
|
15
|
+
②[スペクトラム波形作成](https://teratail.com/questions/289920)
|
16
|
+
|
17
|
+
|
18
18
|
|
19
19
|
③[
|
20
20
|
|