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核计算机上运行时需要14s
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 :(得分:0)
我得到了类似的结果:
Elapsed Time: 4.83800005913 for the first code
Elapsed Time: 2.95100021362 for the second code
你的代码只是计算一些东西,这不是多线程的强项,如果你想使用多线程,可以使用IO繁忙的工作,如文件或网络,但不只是计算一些东西。
答案 1 :(得分:-1)
如this post所述,您无法与multiprocessing.dummy
并行执行。