相关疑难解决方法(0)

Python 2.7.6中使用多处理的奇怪Queue.PriorityQueue行为

正如您从标题中所知,我正在尝试使用PriorityQueue进行多处理.更确切地说,我想制作共享的PriorityQueue,编写了一些代码并且它没有像我预期的那样运行.

看看代码:

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()
Run Code Online (Sandbox Code Playgroud)

得到以下输出:

worker 100
main 0
Run Code Online (Sandbox Code Playgroud)

发生了什么以及如何以正确的方式做我想做的事情?谢谢.

python queue priority-queue multiprocessing

7
推荐指数
1
解决办法
3223
查看次数

标签 统计

multiprocessing ×1

priority-queue ×1

python ×1

queue ×1