Pythonでスレッドを使ってみよう
今回はPythonのスレッド(thread)を使って、処理を並列で動かしてみましょう。
tkinterのキャンバス上に、数字を別々に表示させます。
Pythonのスレッドの使い方は、こちらの記事 を参照してください。
スレッドを使ったプログラム
関数を二つ用意して、それぞれの関数内で数字をカウントアップさせ、それをtkinterのキャンバス上に表示させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
### インポート import time import tkinter import threading ### 関数1 def func1(): ### 変数宣言 cnt = 0 ### 10未満の間ループ while cnt < 10: ### カウントアップ cnt += 1 ### キャンバス書き込み id = canvas.create_text(140, 100, text=cnt, font=(None,48)) ### 待ち時間 time.sleep(1) ### キャンバス初期化 canvas.delete(id) ### 関数2 def func2(): ### 変数宣言 cnt = 0 ### 10未満の間ループ while cnt < 10: ### カウントアップ cnt += 2 ### キャンバス書き込み id = canvas.create_text(280, 100, text=cnt, font=(None,48)) ### 待ち時間 time.sleep(2) ### キャンバス初期化 canvas.delete(id) ### キャンバス作成 canvas = tkinter.Canvas(master=None, width=420, height=200) ### キャンバス表示 canvas.pack() ### スレッド作成 thread1 = threading.Thread(target=func1) thread2 = threading.Thread(target=func2) ### スレッド開始 thread1.start() thread2.start() ### イベントループ canvas.mainloop() |
プログラムを実行すると、以下のように二つの数字が別々に表示されます。