iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
佛心分享-IT 人自學之術

從0開始學PYTHON系列 第 23

Day23 多執行緒程式

  • 分享至 

  • xImage
  •  

第十一章後半,多執行緒程式的介紹與應用

以計算數學舉例,比較單執行與多執行的差異

原程式碼

單執行緒

import time

data = [4, 9, 16]                     # 計算資料

def calc_square (nums) :              # 計算平方的函式
       for n in nums:
             time.sleep (0.5)         # 暫停 0.5 秒
             print(f' {n}的平方是{n**2}')

def calc_root (nums):                # 計算平方根的函式
       for n in nums:
             time.sleep (0.5)
             print(f'{n}開根號是{n**0.5}')

start_time = time.time ()            # 取得目前時間
calc_square(data)                    #計算平方
calc_root(data)                      # 計算平方根
print(' 花費時間:', time.time() -start_time)

結果:

4的平方是16
.
16的開根號是4.0
花費時間:3.004206418991089

執行結果大約為3秒

使用threading程式庫

threading.Thread(target=執行函式名構, args=元組型參數)

多執行緒

import threading
import time

start_time = time. time()           # 取得目前時間
t1 = threading.Thread(target=calc_square, args=(data,))
t2 = threading.Thread ( target=calc_root, args=[data])
t1. start ()
t2. start ()
print('作用中的執行緒:' , threading.active_count ())

t1.join()         #等待t1執行完
t2.join()         #等待t2執行完

print('花費時間:' ,time.time()-start_time)
print('作用中的執行緒:' , threading.active_count ())

結果:

作用中的執行緒:3
4的平方是16
.
16的開根號是4.0
花費時間:1.503751277923584
作用中的執行緒:1

執行結果大約1.5秒
節省一半的時間


上一篇
Day22 requests 和 lxml
下一篇
Day24 資料庫(1)
系列文
從0開始學PYTHON30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言