Python线程不会同时运行
我是多线程处理的全新,所以请原谅我,如果我屠杀条款或错过一些明显的东西。
下面的代码不会在不同的代码中依次调用相同的两个函数提供任何时间优势。
import time
import threading
start_time = time.clock()
def fibonacci(nth): #can be ignored
first = 0
second = 1
for i in range(nth):
third = first + second
first = second
second = third
print "Fibonacci number", i + 1, "is", len(str(first)), "digits long"
def collatz(collatz_max): #can be ignored
for n in range(collatz_max):
n = n + 1 #avoid entering 0
solution = []
solution.append(n)
while n != 1:
if n % 2 == 0:
n = n / 2
else:
n = (n*3) + 1
solution.append(n)
print "Path for Collatz number", collatz_max, "is", solution
def scripts():
thread_fibonacci = threading.Thread(target=fibonacci, args = (800000,))
thread_collatz = threading.Thread(target=collatz, args = (400000,))
thread_fibonacci.start()
thread_collatz.start()
return thread_fibonacci, thread_collatz
all_scripts = scripts()
#wait until both threads are finished
for script in all_scripts:
script.join()
print time.clock() - start_time, "seconds"
我需要做什么才能使线程同步? GIL是否意味着并发只能通过单独的流程来实现? 如果是这样,多线程的意义何在?
在Windows 8.1上使用Python 2.7.5,四核处理器。 任何帮助,将不胜感激。
关于你可以看的GIL有很好的答案。
总之,如果你的任务是CPU限制的(就像你发布的那些),线程不会帮你。 Python线程适用于IO绑定任务,比如检索网页。
链接地址: http://www.djcxy.com/p/55215.html