Merkwürdiges Queue.PriorityQueue-Verhalten mit Multiprocessing in Python 2.7.6

Wie Sie aus dem Titel wissen, versuche ich, PriorityQueue mit Multiprocessing zu verwenden. Genauer gesagt, ich wollte PriorityQueue gemeinsam nutzen, habe Code geschrieben und er läuft nicht wie erwartet.

Schauen Sie sich den Code an:

import time
from multiprocessing import Process, Lock
from Queue import PriorityQueue


def worker(queue):
    lock = Lock()
    with lock:
        for i in range(100):
            queue.put(i)

    print "worker", queue.qsize()


pr_queue = PriorityQueue()
worker_process = Process(target = worker, args = (pr_queue,))
worker_process.start()

time.sleep(5)    # nope, race condition, you shall not pass (probably)
print "main", pr_queue.qsize()

Erhielt die folgende Ausgabe:

worker 100
main 0

Was passiert und wie mache ich das, was ich will, richtig? Danke.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage