【问题标题】:Python multithread does not work [duplicate]Python多线程不起作用[重复]
【发布时间】:2015-03-03 21:26:25
【问题描述】:
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 谁能给我解释一下? 谢谢

【问题讨论】:

    标签: python multithreading


    【解决方案1】:

    我得到了类似的结果:

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

    您的代码只是计算一些东西,这不是多线程的强项,如果您想使用多线程,请承担文件或网络等 IO 繁忙的工作,而不仅仅是计算一些东西。

    【讨论】:

      【解决方案2】:

      this post 中所述,您不能使用multiprocessing.dummy 进行并行执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2018-06-10
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多