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に進んでみるしかない?

コメント

このブログの人気の投稿