2015-01-06 71 views
-2
from multiprocessing.dummy import Pool as ThreadPool 
import time 
def f(x): 
    val=x 
    for i in xrange(100000): 
     if i!=0: 
      val*=i 
      val%=10000 
    return x 
start = time.time() 
iter=10000 
pool=ThreadPool(8) 
res=pool.map(f,xrange(100)) 
pool.close() 
pool.join() 
pool=ThreadPool(8) 
res2=pool.map(f,xrange(100)) 
pool.close() 
pool.join() 
print "Elapsed Time: %s" % (time.time() - start) 
以上

是多線程代碼,在我8核心的計算機上運行時,它需要14SPython的多線程行不通

from multiprocessing.dummy import Pool as ThreadPool 
import time 
def f(x): 
    val=x 
    for i in xrange(100000): 
     if i!=0: 
      val*=i 
      val%=10000 
    return x 
start = time.time() 
iter=10000 
for i in xrange(100): 
    f(i) 
for i in xrange(100): 
    f(i) 
print "Elapsed Time: %s" % (time.time() - start) 

以上是單線程代碼,它需要7S 誰能解釋對我來說? 感謝

回答

0

我得到了類似的結果:

Elapsed Time: 4.83800005913 for the first code 
Elapsed Time: 2.95100021362 for the second code 

你的代碼只是計算的東西,這不是多線程的長處,如果你想使用多線程,採取IO繁忙的工作,如文件或網絡,但不只是計算一些東西。