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 bekomme ich Frames von Video parallel mit cv2 & Multiprocessing in Python
  • Python & Tkinter -> Über das Aufrufen einer lang laufenden Funktion, die das Programm einfriert
  • In Python-Threading, wie kann ich die Faden-Fertigstellung verfolgen?
  • Warum Python Multiprocessing Manager produzieren Threading Locks?
  • Timer-Interrupt-Thread-Python
  • Warum läuft dieses Python-Skript 4x langsamer auf mehrere Kerne als auf einem einzigen Kern
  • Wie kann ich einen Socket.recv () aus einem anderen Thread in Python abbrechen
  • Python Global Variable mit Thread
  • Warum ist nicht numpy.mean multithreaded?
  • Python mit mehreren Prozessoren
  • Python multiprocess fängt an zu starten
  • Python ist die beste Programmiersprache der Welt.