多線程的性能增益我試圖從比較並行計算使用多線程模塊和正常順序的計算性能增益,但無法找到任何真正的區別。下面是我所做的:評估從蟒蛇
import time, threading, Queue
q=Queue.Queue()
def calc(_range):
exponent=(x**5 for x in _range)
q.put([x**0.5 for x in exponent])
def calc1(_range):
exponent=(x**5 for x in _range)
return [x**0.5 for x in exponent]
def multithreds(threadlist):
d=[]
for x in threadlist:
t=threading.Thread(target=calc, args=([x]))
t.start()
t.join()
s=q.get()
d.append(s)
return d
threads=[range(100000), range(200000)]
start=time.time()
#out=multithreads(threads)
out1=[calc1(x)for x in threads]
end=time.time()
print end-start
定時使用線程:0.9390001297
定時順序運行:0.911999940872
順序運行的時機不斷比使用多線程低。 我有一種感覺,我的多線程代碼有問題。
有人點我在正確的方向吧。 謝謝。
你爲什麼有兩個'calc'的功能呢? – ForceBru
其中之一是用於多線程,因爲我希望隊列中返回輸出。因此我使用了一個用於線程,另一個用於序列。 – user2274879
考慮一個更昂貴的函數調用 - fork或啓動線程不是免費的,因此對於非常小的調用,與實際的「工作」相比,初始化開銷非常不平凡。 –