threadingというライブラリを使用する
今いるスレッドを確認
import threading import warnings warnings.simplefilter('ignore') print(threading.currentThread().getName())
$ python3 main.py
MainThread
### threading.Threadでmainとは別にスレッドを作成する
import threading import time import warnings warnings.simplefilter('ignore') def boil_udon(): print(" ■ thread :", threading.currentThread().getName()) print(' うどんを茹でます。') time.sleep(3) print(' うどんが茹で上がりました。') if __name__ == "__main__": print(" ■ thread :", threading.currentThread().getName()) print('うどんを作ります。') # スレッドを作成 thread1 = threading.Thread(target=boil_udon) thread1.start() thread1.join() print('うどんの盛り付けをします。') print('うどんができました。')
$ python3 main.py
■ thread : MainThread
うどんを作ります。
■ thread : Thread-1 (boil_udon)
うどんを茹でます。
うどんが茹で上がりました。
うどんの盛り付けをします。
うどんができました。
### スレッドを更に追加する
import threading import time import warnings warnings.simplefilter('ignore') def boil_udon(): print(" ■ thread :", threading.currentThread().getName()) print(' うどんを茹でます。') time.sleep(3) print(' うどんが茹で上がりました。') def make_tuyu(): print(" ■ thread :", threading.currentThread().getName()) print(' うどんの汁を作ります。') time.sleep(2) print(' うどんの汁ができました。') if __name__ == "__main__": print(" ■ thread :", threading.currentThread().getName()) print('うどんを作ります。') # スレッドを作成 thread1 = threading.Thread(target=boil_udon) thread2 = threading.Thread(target=make_tuyu) thread1.start() thread2.start() thread1.join() thread2.join() print('うどんの盛り付けをします。') print('うどんができました。')
$ python3 main.py
■ thread : MainThread
うどんを作ります。
■ thread : Thread-1 (boil_udon)
うどんを茹でます。
■ thread : Thread-2 (make_tuyu)
うどんの汁を作ります。
うどんの汁ができました。
うどんが茹で上がりました。
うどんの盛り付けをします。
うどんができました。
threadが作られると、同時に処理されていることがわかる
ThreadPoolExecutorの場合は、単純に1つの処理を複数のスレッドで実行するが、threadingの場合は、プログラム内容を指定してスレッドを作成することができる