为什么这种python多线程方法比单线程解决同一个任务需要更多的时间?

2024-09-26 22:53:39 发布

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

为什么这种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!

Tags: 方法indexlenreturnvaluedefcountthread
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:39

我在Java中遇到过这个问题。 用户表示,创建线程所需的开销正在减慢,以至于花费的时间更长。 我建议您尝试使用非常复杂的计算和gen(index,value)函数中更多的数字的线程代码。 如果gen函数需要更多的时间,线程代码可能比简单的解决方案更好。在

相关问题 更多 >

    热门问题