Python3.7高度なプログラミングのasync/await asyncioタスクtaskによる同時実行コラボレーション
1373 ワード
どうきじっこうきょうてい
同時実行のコンセンサス
asyncio.sleep(delay)は、ブロック動作をシミュレートするために使用され、待機可能なオブジェクトtimeを返す時間のかかるタスクと見なすことができる.sleep(delay)は、時間のかかる操作をシミュレートできますが、await構文では使用できません.待機可能なオブジェクトではありません.
import asyncio
import time
# main await , , await await
async def say_after(delay, what):
await asyncio.sleep(delay)
print(what)
async def main():
print(f"started at {time.strftime('%X')}")
await say_after(1, 'hello')
await say_after(2, 'world')
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
同時実行のコンセンサス
import asyncio
import time
# : task , , ,
async def say_after(delay, what):
await asyncio.sleep(delay) # ? time.sleep(delay) asyncio , time.sleep()
# time.sleep(delay)
print(what)
async def main():
print(f"started at {time.strftime('%X')}")
#
task1 = asyncio.create_task(say_after(1,'hello'))
task2 = asyncio.create_task(say_after(2,'world'))
# , Python , 2
await task1
await task2
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
asyncio.sleep(delay)は、ブロック動作をシミュレートするために使用され、待機可能なオブジェクトtimeを返す時間のかかるタスクと見なすことができる.sleep(delay)は、時間のかかる操作をシミュレートできますが、await構文では使用できません.待機可能なオブジェクトではありません.