Threading / Queue in Python

Ich beabsichtige mit Threads / Warteschlangen mit Python 2.5.2 Aber es scheint, dass Python wird in der Warteschlange.join () – Befehl eingefroren. Die Ausgabe des Followong-Codes ist nur: VORHER

import Queue import threading queue = Queue.Queue() class ThreadUrl(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue def run(self): while True: i = self.queue.get() print i self.queue.task_done() def main(): for i in range(5): t = ThreadUrl(queue) t.setDaemon(True) t.start() for i in range(5): queue.put(i) print "BEFORE" queue.join() print "AFTER" main() 

Hat jemand eine Idee darüber, was los ist?

4 Solutions collect form web for “Threading / Queue in Python”

Sie laufen () Methode auf Ihre ThreadUrl Klasse ist zu weit eingerückt. Der Thread wird niemals damit begonnen. Wenn du die Einrückung der Run-Methode auf die gleiche Einrückung Ebene wie init () wird es gut funktionieren.

Die Lösung, die ich jetzt gefunden habe, ist:

Verwenden Sie Python 2.5.2 nicht! Wenn man Python 2.7.2 verwendet, funktioniert der Code oben sehr gut.

Danke euch allen!

Ich denke, es ist der T.setDaemon (True) Teil.

So> 2.6

T.setDaemon (Wahr)

<2.6

T.daemon = True

Verwenden Sie Daemon = True. Damit wird sichergestellt, dass Ihr Thread ausläuft, sobald die Hauptfunktion ausgeführt wird.

  • Python, wie man Threads, die in der Warteschlange mit Signalen blockiert sind, tötet?
  • Was ist der richtige Weg zu handhaben (in Python) IOError: [Errno 4] Unterbrochener Systemaufruf, angehoben durch Multiprocessing.Queue.get
  • Wie warte ich, bis ein hervorgegangener Thread in Python beendet ist?
  • Bestimmen Sie, ob eine Aufgabe GAE Python gelöscht wurde
  • Holen Sie sich alle Artikel aus Thread Queue
  • Python mit mehreren Prozessoren
  • Füge Timeout-Argument zu pythons Queue.join () hinzu
  • Wie man einen Thread mehr als einmal in Python läuft
  • Tasks parallel in Python ausführen
  • Kann python-Threads Zugriffsvariablen im Namensraum haben?
  • Schreiben in eine Datei mit Multiprocessing
  • Python ist die beste Programmiersprache der Welt.