書籍「Pythonチュートリアル 第3版 11.4 マルチスレッド」のサンプルプログラムを、より分かりやすい例で書き直したあ〜(^o^)v
書籍「Pythonチュートリアル 第3版 11.4 マルチスレッド」を読んだのですが、、、具体的な説明が一切無いマルチスレッドサンプルプログラムが載っていました💦
幸いマルチスレッドプログラミングの経験があったので、なんとか調べながらサンプルプログラムを理解出来ました。。。
で、、、より分かりやすいと思う、注釈をバンバン入れた類似のサンプルプログラムを書いてみたので公開します。
このサンプルプログラムが、Pythonマルチスレッドプログラミングの理解に少しでも役に立てば幸いです。
なお、このサンプルプログラムは⬇️で今日(2021/06/07)から60日の間ダウンロード出来ます。
サンプルプログラム
# 書籍「Pythonチュートリアル 第3版 11.4 マルチスレッド」のサンプルプログラムを、分かりやすい例で書き直したあ〜(^o^)v
# 必要なインポート。。。
import threading, time
# Thread オブジェクトのサブクラスを作成
# __init__() と run() メソッド だけをオーバライド (他のメソッドはオーバーライド不可!!)
class SubThread(threading.Thread):
def __init__(self):
# 必ずこのスレッドが何かを始める前に Thread.__init__() のコンストラクタを呼ぶ!!
threading.Thread.__init__(self)
# start()メソッドは run()メソッドを起動する!!
def run(self):
time.sleep(2) # サブスレッドは最初に2秒待つ
# サブスレッドのループ
for i in range(5): # 5回ループする
print(' サブスレッド ', i + 1)
time.sleep(4) # 4秒待つ
sub_t = SubThread() # サブスレッドのインスタンス作成
sub_t.start() # サブスレッド活動開始! run()メソッドを起動する!!
print('サブスレッド起動!\n')
# メインスレッドのループ
for i in range(5): # 5回ループする
print('メインスレッド ', i + 1)
time.sleep(4) # 4秒待つ
sub_t.join() # サブスレッドが終了するまで待機
print('\nサブスレッド終了!')
'''
//実行結果//
サブスレッド起動!
メインスレッド 1
サブスレッド 1
メインスレッド 2
サブスレッド 2
メインスレッド 3
サブスレッド 3
メインスレッド 4
サブスレッド 4
メインスレッド 5
サブスレッド 5
サブスレッド終了!
'''
☆ 追記付録 ☆
「Pythonチュートリアル 第3版 11.5 ログ取り」を読んで、一部をログ出力に書き換えました。。。
なお、この書き換えサンプルプログラムは⬇️で今日(2021/06/08)から60日の間ダウンロード出来ます。
書き換えサンプルプログラム
# 付録「Pythonチュートリアル 第3版 11.5 ログ取り」を読んで、一部を logging で書き直したあ〜(^o^)v
# 必要なインポート。。。
import threading, time
# ログ取りで必要なインポート。。。
import logging
# Thread オブジェクトのサブクラスを作成
# __init__() と run() メソッド だけをオーバライド (他のメソッドはオーバーライド不可!!)
class SubThread(threading.Thread):
def __init__(self):
# 必ずこのスレッドが何かを始める前に Thread.__init__() のコンストラクタを呼ぶ!!
threading.Thread.__init__(self)
# start()メソッドは run()メソッドを起動する!!
def run(self):
time.sleep(2) # サブスレッドは最初に2秒待つ
# サブスレッドのループ
for i in range(5): # 5回ループする
print(' サブスレッド ', i + 1)
time.sleep(4) # 4秒待つ
logging.basicConfig(level=logging.DEBUG) # ログ出力のレベルを DEBUG に設定
sub_t = SubThread() # サブスレッドのインスタンス作成
sub_t.start() # サブスレッド活動開始! run()メソッドを起動する!!
logging.debug('サブスレッド起動!\n') # DEBUG ログ出力
# メインスレッドのループ
for i in range(5): # 5回ループする
print('メインスレッド ', i + 1)
time.sleep(4) # 4秒待つ
sub_t.join() # サブスレッドが終了するまで待機
print()
logging.debug('サブスレッド終了!') # DEBUG ログ出力
'''
DEBUG:root:サブスレッド起動!
メインスレッド 1
サブスレッド 1
メインスレッド 2
サブスレッド 2
メインスレッド 3
サブスレッド 3
メインスレッド 4
サブスレッド 4
メインスレッド 5
サブスレッド 5
DEBUG:root:サブスレッド終了!
'''
#Pythonチュートリアル第3版
#Pythonチュートリアル
#マルチスレッド
#ログ出力
#ログ取り
#ログ
#threading
#Thread
#logging
#Chromebook 上の #Linux で #Python #Python3 #プログラミング を勉強中 !