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核计算机上运行时,需要14秒
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)
上面是单线程代码,需要7秒 有人能给我解释一下吗? 谢谢
如this post中所述,不能用
multiprocessing.dummy
执行并行执行。你知道吗我得到了类似的结果:
你的代码只是计算一些东西,这不是多线程的长处,如果你想使用多线程,采取IO繁忙的工作,如文件或网络,但不只是计算一些东西。你知道吗
相关问题 更多 >
编程相关推荐