我在Python2.7中使用多线程和队列时遇到了一个问题。我希望有线程的代码大约要比没有线程的代码长一半,但我认为我做错了什么。我使用了一个简单的fibonacci序列循环技术来最好地显示问题。在
下面是没有线程和队列的代码。它打印了19.9190001488秒作为执行时间。在import time
start_time = time.time()
def fibonacci(priority, num):
if num == 1 or num == 2:
return 1
a = 1
b = 1
for i in range(num-2):
c = a + b
b = a
a = c
return c
print fibonacci(0, 200000)
print fibonacci(1, 100)
print fibonacci(2, 200000)
print fibonacci(3, 2)
print("%s seconds" % (time.time() - start_time))
下面是包含线程和队列的代码。它打印21.7269999981秒作为执行时间。在
^{pr2}$
我认为多线程代码所花费的时间是没有线程的代码的一半。基本上我认为所有线程都在同一时间工作,所以计算fibonacci数200000的两个线程将同时完成,因此执行速度大约是没有线程的代码的两倍。显然不是这样。我做错什么了吗?我只想同时执行所有的线程,按它们开始的顺序打印,花费最长时间的线程几乎就是执行时间。在
编辑:
我更新了