monicaに質問すると、次の様な結果が返ってきたので、
Pythonで、time.sleep(5)の代わりに、処理を止めずに、5秒処理待ちするコードを教えてください。
Pythonで処理を5秒待つために、time.sleep(5)の代わりに次のコードを使用できます。
import asyncio
async def wait():
await asyncio.sleep(5)
asyncio.run(wait())
このコードは非同期処理を使用しており、await asyncio.sleep(5)によって5秒間の待機が行われます。
処理はブロックされずに継続されるため、他のタスクを同時に実行できます。
asyncioを使用した処理を更に質問し、次の様な簡単に記述できそうなコードを試行錯誤してチェックを行い、
import asyncio
# 1 ###################################################
async def wait():
await asyncio.sleep(1)
print("Waited for 1 second")
async def main():
await wait()
# ここに他の処理を追加できます
await wait()
asyncio.run(main())
asyncio.run(main())
asyncio.run(main())
# 2 ###################################################
# 処理待ち関数の定義
async def wait():
await asyncio.sleep(1)
print("Waited for 1.0 second")
async def main1(): # 1秒待ち
await wait()
async def main2(): # 2秒待ち
await wait()
await wait()
# asyncio.run(main1()) で1秒の処理待ち
asyncio.run(main1())
# asyncio.run(main2()) で2秒の処理待ち
asyncio.run(main2())
# 3 ###################################################
async def wait1():
await asyncio.sleep(1)
print("Waited for 1.00 second")
asyncio.run(wait1())
async def wait2():
await asyncio.sleep(2)
print("Waited for 2 second")
asyncio.run(wait2())
# 4 ###################################################
asyncio.run(asyncio.sleep(3))
print("Waited for 3 second")
asyncio.run(asyncio.sleep(4))
print("Waited for 4 second")
3番目のコードで、PySimpleGUIプログラムの修正を試みた。
結果は、
文字が真っ黒になる不具合は、asyncio.run(wait2())を
window0 = sg.Window(・・・)の前に入れても後ろに入れても改善せず、
event, values = window0.read(timeout=100)での対処療法に戻した。
画像の更新を2回するはずが、なぜか1回しか更新しない不具合は、
asyncio.run(wait2())をret, frame = cap.read()の後ろに入れても、
window['-IMAGE-'].update(data=cv2.imencode('.png', frame_resized)[1].tobytes())
の後ろに入れても、
・ダミーの点灯無し
・点灯あり
・点灯無しと点灯ありの混じったもの(上下で別れる)
のどれかの画像更新1回のみと、以前と変わらず、改善効果なし。
Tkinterに進んでみるしかない?
コメント
コメントを投稿