为什么这种python多线程方法要比单线程花费更多的时间来解决相同的问题?在
我的电脑就是多核处理器。在
我用两种方法编写了相同的代码,并进行了比较。令人惊讶的是单线程的方式更快!有人有什么想法吗?在
#!/usr/bin/python
L = [1,2,3,4,5,7,8,9,10]
def gen(index,value):
if index==len(L):
return 1
count=0
for i in range(len(value)+1):
count+=gen(index+1,value[:i]+[L[index]]+value[i:])
return count
#Single thread approach
print gen(1,[1]) #this takes 480ms to run!
#Multi-thread approach
from threading import Thread
def t1_start():
global pointer1
pointer1=gen(2,[2,1])
def t2_start():
global pointer2
pointer1=gen(2,[1,2])
pointer1=0
pointer2=0
t1=Thread(target=t1_start,args=())
t2=Thread(target=t2_start,args=())
t1.start()
t2.start()
t1.join()
t2.join()
#print pointer1+pointer2 #this takes 650ms to run!
我在Java中遇到过这个问题。 用户表示,创建线程所需的开销正在减慢,以至于花费的时间更长。 我建议您尝试使用非常复杂的计算和gen(index,value)函数中更多的数字的线程代码。 如果gen函数需要更多的时间,线程代码可能比简单的解决方案更好。在
相关问题 更多 >
编程相关推荐