python のお手軽な非同期処理 async coroutines #3
ハロー. どうも hkrblog です.
最近寒いですね~~~~~~.
今日はpython の非同期処理をやってみました.
といっても3か月くらい前に書いたものがあったので、そのときのサンプル貼りますww
Pythonの仕事から離れて今はJavaのお仕事なので、最近python全然書いてないwww
結局公式読むのが一番はやいっっ.
サンプルはこんな感じです.
import asyncio import random """ This code output sample いらっしゃいませ (customer_number : 1) いらっしゃいませ (customer_number : 2) Water 1点で100円です (customer_number : 1) いらっしゃいませ (customer_number : 3) Cola 1点で100円です (customer_number : 2) Cola 1点で100円です (customer_number : 3) ありがとうございました (customer_number : 1) ありがとうございました (customer_number : 2) ありがとうございました (customer_number : 3) """ async def display_items(): delay = random.randrange(4) await asyncio.sleep(delay) async def get_item_from_customer(): delay = random.randrange(8) await asyncio.sleep(delay) item = random.choice(['Cola', 'Rice Ball', 'Water']) return item async def get_payment(): delay = random.randrange(10) await asyncio.sleep(delay) async def work(customer_number): await display_items() print('いらっしゃいませ (customer_number : {})'.format(customer_number)) item = await get_item_from_customer() print('{} 1点で100円です (customer_number : {})'.format(item, customer_number)) await get_payment() print('ありがとうございました (customer_number : {})'.format(customer_number)) # Create coroutines coroutines = asyncio.gather( work(1), work(2), work(3) ) # Event loop loop = asyncio.get_event_loop() loop.run_until_complete(coroutines) loop.close()
ちょっといろいろ雑なんだけど店員の仕事を表しております...
ランダムにdelayを作って、わかりやすくしてみました.(雑ですみませんw)
では #4でまたお会いしましょう.