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の場合は、プログラム内容を指定してスレッドを作成することができる