Pythonは3.5から、C#みたいなasync/awaitを用いた非同期処理が可能になっている。
これ系のパターンでは「非同期処理を待つ」ためにawaitキーワードを使い、「(awaitを含む) 非同期処理が行われる関数をマークする」ためにasyncキーワードを使う。非同期処理の終了は行儀よくawaitで待ち受けるのが普通だが、時には単に非同期処理を投げっぱなしにしたいこともある。ログを書くとか、通知を飛ばすとか。
C#においてはasyncかつ返り値をvoidにすればawaitせずにコールできる非同期メソッドが書ける(逆に言うと、awaitする必要がある非同期メソッドはTaskかTask
知ってる人は「fire and forget」とかで検索すればいいのだが、これは一度どこかで見て覚えていなければどうしようもない類の知識なので、わざわざ日本語で検索しやすいようにとこんな記事を書いているのだ、という長い前置き。
次のようにすればオッケー。(以下のコードはそのままコピペして動くものではなく、あくまで「例」)
import asyncio async def hogehoge(): pass asyncio.ensure_future(hogehoge())
使いようによってはensure_futureには落とし穴があったりするんだけど、それはまた別の機会に。