30FPSで20分間正確に動作させたいものがあり、この記事を参考に以下のコードを書きました
pyton3
1import signal 2import time 3 4FPS = 30 5 6period = 1/FPS 7loopCount=0 8 9def scheduler(arg1, args2): 10 #if loopCount%30==0: 11 print(time.time()) 12 loopCount=loopCount+1 13 14print("hello!") 15 16signal.signal(signal.SIGALRM, scheduler) 17signal.setitimer(signal.ITIMER_REAL, 1, period) 18 19time.sleep(60*20)
すると、
❯ python3 signal_hander.py hello! 1567299304.4154801 Traceback (most recent call last): File "signal_hander.py", line 19, in <module> time.sleep(60*20) File "signal_hander.py", line 12, in scheduler loopCount=loopCount+1 UnboundLocalError: local variable 'loopCount' referenced before assignment
というエラーが返ってきました。
わからないこと
loopCountというグローバル変数を30FPSで呼び出すscheduler関数で使っており、実際のコードでもグローバル変数は頻繁に使用したいです。
しかしシグナルハンドラを用いて定期実行する関数内ではグローバル変数が使えない?というようなエラーが返ってきており困っています。
もしどなたか解決法が思いつく方がいらっしゃったら教えて頂けないでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/01 06:32