ใฏใใใซ
Python ใซใฏ้ๅๆๅฆ็ใ่กใใใใฎ async / await ใจใใๅผทๅใชๆงๆใใใใ
ใใใใ่ชๅ่ช่บซใ้ฃใใ๏ผใใไฝใ่ตทใใฆใใฎใๅใใใชใ๏ผใใจๆใใฆใใใใใ้ ญใฎๆด็ใๅ
ผใญใฆๆ็ใฎๆ้ ใไพใซใใฆ ใ้ ็ชใซๅฆ็ใใใ ใใจใจ ใไธฆๅใซๅฆ็ใใใ ใฎ้ใใใพใจใใฆใฟใใ
ใชใ้ๅๆๅฆ็ใฏ้ฃใใๆใใใฎใ๏ผ
้ๅธธใฎPythonใณใผใใฏใไธใใ้ ็ชใซๅฆ็ใใใใใใใใใพใๆ่ญใใชใใฆใๅไฝใไบๆณใงใใใ
ใใใใ้ๅๆๅฆ็ใงใฏ ใใฉใใงๅฆ็ใๆญขใพใใใฉใฎๅฆ็ใไธฆๅใงๅใใใ ใ่ใใๅฟ
่ฆใใใใใใใ้ๅๆๅฆ็ใ้ฃใใๆใใๅๅ ใงใใใจ่ใใใใใ
๐ ใพใใฏ้ๅธธใฎ้ ็ชๅฆ็๏ผๅๆๅฆ็๏ผ
ไปฅไธใฏใๆ็ใฎๆ้ ใ้ ็ชใซๅฎ่กใใไพใงใใ
def cook():
print("โ ้่ใๅใ")
print("โก็
ฎใ")
print("โขๅณไปใใใ")
print("โฃๅฎๆ๏ผ")
cook()
โ ้่ใๅใ
โก็
ฎใ
โขๅณไปใใใ
โฃๅฎๆ๏ผ
ใใใฏ้ๅธธใซๅใใใใใใไธๆฌ้ใใฎๅฆ็ใจใชใใพใ๏ผไธใใ้ ็ชใซๅฆ็ใใใ๏ผ
๐ ้ๅๆๅฆ็ใงไธฆ่กใใฆๅใใ
ใใใใใๆฌ้กใ
ไปฅไธใฎใใใซ async def ใงๅฎ็พฉใใ้ขๆฐใไฝฟใใawait asyncio.gather(...) ใไฝฟใฃใฆไธฆ่กๅฆ็ใๅฎๆฝใ
import asyncio
async def carrot():
print("ใใณใธใณใๅใฃใฆใใพใ")
await asyncio.sleep(2)
print("ใใณใธใณๅใใพใใ")
async def potato():
print("ใธใฃใฌใคใขใๅใฃใฆใใพใ")
await asyncio.sleep(1)
print("ใธใฃใฌใคใขๅใใพใใ")
async def seasoning(name):
print(f"{name}ใๅ ใใฆใใพใ")
async def cook_all(menu, seasoning_name, **kwargs):
print(f"{menu}ใไฝใใพใ")
# ไธฆๅใงๅฆ็
await asyncio.gather(*[func() for func in kwargs.values()])
await seasoning(seasoning_name)
print(f"{menu}ใๅฎๆใใพใใ๏ผ")
if __name__ == "__main__":
asyncio.run(
cook_all(
menu="้่ในใผใ",
seasoning_name="ๅกฉ",
step1=carrot,
step2=potato
)
)
้่ในใผใใไฝใใพใ
ใใณใธใณใๅใฃใฆใใพใ
ใธใฃใฌใคใขใๅใฃใฆใใพใ
ใธใฃใฌใคใขๅใใพใใ
ใใณใธใณๅใใพใใ
ๅกฉใๅ ใใฆใใพใ
้่ในใผใใๅฎๆใใพใใ๏ผ
ๆณจ็ฎใใคใณใ
ใธใฃใฌใคใข ใ1็งใใใณใธใณ ใ2็ง โ ใธใฃใฌใคใขใฎๅฆ็ใๅ
ใซ็ตใใ๏ผ
gather() ใซใใฃใฆๅๆใซๅฆ็ใ้ๅงใใใใใใๅฆ็ใฎ้ ็ชใๅ
ฅใๆฟใใๅฏ่ฝๆงใใใ
๐ ้ ็ชใซๅฆ็ใใใๅ ดๅใฏใฉใใใ๏ผ
้ๅๆ้ขๆฐใงใ้ ็ชใๅฎใฃใฆๅฎ่กใใใๅ ดๅใฏใไปฅไธใฎใใใซ for ใซใผใใง awaitใใใ
for step in kwargs.values():
await step()
ใใณใธใณใๅใฃใฆใใพใ
ใใณใธใณๅใใพใใ
ใธใฃใฌใคใขใๅใฃใฆใใพใ
ใธใฃใฌใคใขๅใใพใใ
ใฎใใใซ้ ็ช้ใใซๅฎ่กใใใพใใ
๐ง ้ๅๆๅฆ็ใฎ็่งฃใใคใณใใพใจใ
async def ใงๅฎ็พฉใใใ้ขๆฐใฏใ้ๅๆ้ขๆฐใใซใชใใawait ใไฝฟใฃใฆใๆญขใพใฃใฆใใใใๅฆ็ใ
asyncio.gather(...) ใไฝฟใใจใ่คๆฐใฎๅฆ็ใไธฆๅใซๅฎ่กใงใใใ
ๅฎ่กใฟใคใใณใฐใๅพ
ใกๆ้ (await asyncio.sleep(...)) ใซใใฃใฆๅฆ็ใฎๅฎไบ้ ใๅคใใใฎใงใ้ ็ชใไฟ่จผใใใชใ็นใซๆณจๆใๅฟ
่ฆใ
ใ้ ็ชใๅฎใใใใชใใซใผใ๏ผawaitใใงๅฆ็ใ
๐ ใใใใซ
้ๅๆๅฆ็ใฏใๆๅใฏใจใฃใคใใซใใใงใใใใๆ็ใฎๅทฅ็จใฎใใใซใๅๆใซๅใใใใฎใจ้ ็ชใซใใใใฎใใใใใจ่ใใใจใๅฐใใใค็่งฃใ้ฒใใใใซใชใใพใใ