Python-Multithread-Druckanweisungen verzögert, bis alle Threads die Ausführung abgeschlossen haben

Ich habe ein Stück Code unten, das schafft ein paar Threads, um eine Aufgabe, die funktioniert perfekt gut auf eigene Faust. Allerdings kämpfe ich, um zu verstehen, warum die Druckaussagen, die ich in meiner Funktion anrufe, nicht ausgeführt werden, bis alle Threads abgeschlossen sind und die print 'finished' Anweisung aufgerufen wird. Ich würde erwarten, dass sie als Faden ausgeführt werden. Gibt es einen einfachen Weg, dies zu erreichen, und warum funktioniert das auf diese Weise an erster Stelle?

 def func(param): time.sleep(.25) print param*2 if __name__ == '__main__': print 'starting execution' launchTime = time.clock() params = range(10) pool=multiprocessing.Pool(processes=100) #use N processes to download the data _=pool.map(func,params) print 'finished' 

2 Solutions collect form web for “Python-Multithread-Druckanweisungen verzögert, bis alle Threads die Ausführung abgeschlossen haben”

Dies geschieht durch Stdout-Pufferung. Du kannst die Puffer noch spülen:

 import sys print 'starting' sys.stdout.flush() 

Hier finden Sie weitere Informationen zu diesem Thema.

Für python 3 kannst du nun den flush param so verwenden:

print('Your text', flush=True)

  • Wie kann man die Anzahl der angelegten Thread-Objekte begrenzen?
  • Python Tkinter Label neu zeichnen alle 10 Sekunden
  • Was ist "Thread Local Storage" in Python, und warum brauche ich es?
  • Python Threading String Argumente
  • Warum läuft dieses Python-Skript 4x langsamer auf mehrere Kerne als auf einem einzigen Kern
  • Herunterladen von über 1000 Dateien in Python
  • Kann ein Python-Skript wissen, dass eine andere Instanz des gleichen Skripts läuft ... und dann mit ihm reden?
  • Wie benutzt man Threads innerhalb einer Flask-Route
  • Python Timeout
  • Wie man hing Fäden in Python zu töten
  • Python: wie man pakete in multi thread sendet und dann der thread tötet sich selbst
  • Python ist die beste Programmiersprache der Welt.