Python多线程不支持

2024-04-28 06:09:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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秒 有人能给我解释一下吗? 谢谢


Tags: infromimportfortimedefasval
2条回答

this post中所述,不能用multiprocessing.dummy执行并行执行。你知道吗

我得到了类似的结果:

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

你的代码只是计算一些东西,这不是多线程的长处,如果你想使用多线程,采取IO繁忙的工作,如文件或网络,但不只是计算一些东西。你知道吗

相关问题 更多 >