なにかの処理をバックグラウンドスレッドで実行して、アプリケーション終了時にその処理を止めたいことがあります。 たとえばOpenTelemetryのトレースやログを送信するためにスレッドが使われていますが、それらは終了時にバッファリングしているデータを送信してから終了します。 コマンドラインアプリケーションでは、main関数の終了時にバックグラウンドスレッドの終了を呼び出して待つことができます。 # th_main.py import threading import time alive = True def bgmain(): while alive: print("hello") time.sleep(1) th = threading.Thread(target=bgmain) th.start() def main(): global alive try: while True: