openの時のようにwith文を使えるようにするには、contextlibモジュールのcontextmanagerデコレータを使えば簡単に実装できます。
openの時の例
with open('hoge.txt') as f:
f.read()
# withブロックを抜けるとファイルclose
contextmanagerを使用した例
from contextlib import contextmanager
@contextmanager
def myfunc():
print('前処理')
yiled #ここで処理が中断
print('後処理')
# with文で使ってみる。
with myfunc():
print(1+2)
# 前処理
# 3
# 後処理