2015-01-06 3 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 

ваш код просто вычислить что-то, что не форте многопоточных, если вы хотите использовать многопоточный, принять занятую работу ввода-вывода, таких как файл или сети, но не просто вычислить что-то.

-1

Как указано в this post, вы не можете выполнять параллельное выполнение с помощью multiprocessing.dummy.

Смежные вопросы