背景
pythonでマルチスレッドが必要になり、使用方法について調査してみました。threadingモジュールを使用するのが一般的なようです。
環境
- Macbook Air M1
- macOS Sonoma 14.0
- python 3.11
コード
ログに各スレッド名を出力するようにしました。
main.py
import threading
import time
# Log
def log(str):
print("[{}] {}".format(threading.current_thread().name, str ))
# Sub
def worker():
log('Invoked')
time.sleep(3)
log('Completed')
# Main
if __name__=="__main__":
log('Start')
log('Invoking worker...')
worker_thread = threading.Thread(target = worker, name = 'workder thread', daemon = True)
worker_thread.start()
worker_thread.join()
# 後処理
log('End')
実行結果
% python3 main.py
[MainThread] Start
[MainThread] Invoking worker...
[workder thread] Invoked
[workder thread] Completed
[MainThread] End