Python-Threads laufen nicht gleichzeitig

Ich bin brandneu bei Multi-Thread-Verarbeitung, also bitte verzeihen Sie mir, wenn ich Metzger Begriffe oder vermisse etwas offensichtlich.

Der untenstehende Code bietet keinen zeitlichen Vorteil gegenüber dem anderen Code, der die gleichen zwei Funktionen nacheinander aufruft.

  • Wie verwalte ich lokale vs Produktionseinstellungen in Django?
  • Theano - Druckwert von TensorVariable
  • Nachahmung von HTML5 Video-Unterstützung auf PhantomJS, die durch Selen in Python verwendet wird
  • Suche twitter feeds mit Tweepy
  • Verwenden von super () in verschachtelten Klassen
  • Pycharm - Autoload Modelle in Django Konsole

  • 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" 

    Was muss ich tun, um die Fäden gleichzeitig zu machen? Gibt es GIL, dass Parallelität nur durch getrennte Prozesse erreicht werden kann? Wenn ja, was ist der Punkt der Multithreading?

    Verwenden von Python 2.7.5 unter Windows 8.1, Quad-Core-Prozessor. Jede Hilfe wäre willkommen.

    One Solution collect form web for “Python-Threads laufen nicht gleichzeitig”

    Es gibt gute Antworten auf die GIL, die man sich anschauen kann.

    Kurz gesagt, wenn deine Aufgaben CPU-gebunden sind (wie die, die du gepostet hast), werden Threads dir nicht helfen. Python-Threads sind gut für IO-gebundene Aufgaben, wie das Abrufen einer Webseite.

    Python ist die beste Programmiersprache der Welt.