Python学習【365日チャレンジ!】205日目のマスターU(@Udemy11)です。
朝晩すずしくなってきたとおもっていた矢先、梅雨に戻ったような蒸し暑さのあさが来たと思ったら、台風が近づいて来ているようです。
異常気象と言われていますが、台風も年に何回か最大規模の台風が来て被害が出ているので、今回の台風が大きな被害を起こさないことを願うばかりです。
それでは、今日もPython学習をはじめましょう。
昨日の復習
昨日は、threading
モジュールについて学習してきました。
並列処理ができるthreading
ですが、time
モジュールを使ってタイムラグを入れて出力してみました。
logging
を使って出力することもできました。
threading
の基本的な使い方については、昨日の記事をごらんください。
今日は、スレッドにわたす引数について学習します。
スレッドの引数
昨日は、Thread
に引数のtarget
に関数名を入れましたが、name
やargs
、kwargs
などの引数を渡すことができます。
import logging
import threading
import time
logging.basicConfig(
level=logging.DEBUG, format='%(threadName)s: %(message)s')
def thread1():
logging.debug('start1')
time.sleep(3)
logging.debug('end1')
def thread2(x, y=0):
logging.debug('start2')
logging.debug(x)
logging.debug(y)
time.sleep(5)
logging.debug('end2')
if __name__ == '__main__':
t1 = threading.Thread(name='rename thread', target=thread1)
t2 = threading.Thread(args=(10, ), kwargs={'y': 5}, target=thread2)
t1.start()
t2.start()
print('started')
ロギングを使っていますが、21行目で引数target
で、8行目の関数thread1
を指定して、スレッドの引数name
を渡しています。
22行目のスレッドでは、引数target
に、13行目の関数thread2
を指定して、引数のx
とy
にそれぞれargs
とkwargs
で10
と5
を渡しています。
実行すると次のような出力結果になります。
実行結果
rename thread: start1
Thread-1: start2
Thread-1: 10
Thread-1: 5
started
rename thread: end1
Thread-1: end2
スレッド名がrename thread
変更されているので、2つ目のスレッドがThread-1
になっています。
また、logging.debug
でx
とy
を出力しています。
5行目のstarted
を出力したあと、3秒後にrename thread: end1
が出力され、そのあと2秒後にThread-1: end2
が出力されます。
使いみちが見えない
酒井さんの講座では、基本の使い方を解説されているのですが、具体的にこんな場面で使うという具体例は紹介されていません。
実際に具体的なコードを書く場面に直面してはじめて、今回学習したことが理解できるかもしれません。
具体的なコードをどれだけ書いているかということ、つまり経験だけが、スキルアップにつながる唯一の方法なので、どんどんコードを書くことが重要です。
その前に基本的な使い方を理解していないとコードを書いていてもちんぷんかんぷんになってしまうので、必要最低限の使い方を理解できれば、具体的なコードを書いて実践経験を積み上げましょう。
それでは明日もGood Python!