例一
#coding=utf-8
from threading import Thread
import os, time
#計算密集型任務
def work():
res = 0
for i in range(100000000):
res *= i
if __name__ == "__main__":
l = []
print("本機為",os.cpu_count(),"核 CPU") # 本機為4核
start = time.time()
for i in range(4):
p = Thread(target=work) # 多程序
l.append(p)
p.start()
for p in l:
p.join()
stop = time.time()
print("計算密集型任務,多線程耗時 %s" % (stop - start))
輸出
本機為 4 核 CPU
計算密集型任務,多線程耗時 29.623388290405273
import time
import threading
def task_thread(counter):
print(f'線程名稱:{threading.current_thread().name} 參數:{counter} 開始時間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
num = counter
while num:
time.sleep(3)
num -= 1
print(f'線程名稱:{threading.current_thread().name} 參數:{counter} 結束時間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
if __name__ == '__main__':
print(f'主線程開始時間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
#初始化3個線程,傳遞不同的參數
t1 = threading.Thread(target=task_thread, args=(3,))
t2 = threading.Thread(target=task_thread, args=(2,))
t3 = threading.Thread(target=task_thread, args=(1,))
#開啟三個線程
t1.start()
t2.start()
t3.start()
#等待運作結束
t1.join()
t2.join()
t3.join()
print(f'主線程結束時間:{time.strftime("%Y-%m-%d %H:%M:%S")}')
主線程開始時間:2019-01-20 15:28:27
線程名稱:Thread-1 參數:3 開始時間:2019-01-20 15:28:27
線程名稱:Thread-2 參數:2 開始時間:2019-01-20 15:28:27
線程名稱:Thread-3 參數:1 開始時間:2019-01-20 15:28:27
線程名稱:Thread-3 參數:1 結束時間:2019-01-20 15:28:30
線程名稱:Thread-2 參數:2 結束時間:2019-01-20 15:28:33
線程名稱:Thread-1 參數:3 結束時間:2019-01-20 15:28:36
主線程結束時間:2019-01-20 15:28:36