1. 程式人生 > >python 的多線程執行速度

python 的多線程執行速度

targe 高達 read 時間 oat join() 如果 color star

python 的多線程有點雞肋,適用場景有局限,單位時間多個核只能跑一個線程。

有泳池一個,四個泵,但只有一個人,一人只能開啟管理著其中一個,所以四個泵沒什麽用。但是,如果泵的工作時間與冷卻恢復時間是1:3(感謝inoahx指出,已改),那麽配置的利用率高達100%。
直接運行代碼 single.py
#!/usr/bin/python3
#-*- coding: utf-8 -*-
# author:zhouchao
# 功能:直接運行程序 計算時間

import threading
import sys
import math
import time

lists 
= []; for x in range(1,10000000): lists.append(x); length = len(lists); for x in range(600): step = math.ceil(float(length)/600) minIndex = step * x if minIndex + step > length : maxIndex = length else: maxIndex = minIndex+step print(lists[minIndex:maxIndex]) datetime
= time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) fileObject = open("time1.txt",a+); fileObject.write(str(datetime)+"\n"); fileObject.close();

所需時間:134 s

開600 個線程運行同一代碼

multiThread.py

#!/usr/bin/python3
#-*- coding: utf-8 -*-
# author:zhouchao
# 功能:600線程計算執行時間


import
threading import sys import math import time lists = []; for x in range(1,10000000): lists.append(x); def function(i): global lists length = len(lists); step = math.ceil(float(length)/600) minIndex = step * i if minIndex + step > length : maxIndex = length else: maxIndex = minIndex+step print(lists[minIndex:maxIndex]) datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # datetime = str(lists[minIndex:maxIndex]) fileObject = open("time2.txt",a+); fileObject.write(str(datetime)+"\n"); fileObject.close(); threads = [] for i in range(600): t = threading.Thread(target=function , args=(i,)) threads.append(t) t.start() t.join()

所需時間:160 s

python 的多線程執行速度