当Queue.qsize()不为0时,为什么在python多处理中Queue.empty()为True?

时间:2016-09-27 07:24:44

标签: python multithreading queue multiprocessing

大家, 我在多处理中有一个关于队列的问题:

我使用Queue与多个进程交换数据,放置两个进程并获得一个进程。但我发现:

  1. 当queue.qsize()不为0但queue.empty()为True时。而且queue.get()也在等待。

  2. 如果queue.get()正在等待,则在其他进程中使用queue.put()。

  3. 代码:

    from multiprocessing import Queue
    
    train_queue = Queue(maxsize = 50000)
    ****
    **** Other Module
    ****
    if train_queue.empty() == True:
            print "***** ", i, " **** queue is empty"
            print "***** queue.get, train_queue.qsize: ", train_queue.qsize()
            ti = time.time()
    

    LOG:

    ***** 10 **** queue is empty
    ***** queue.get, train_queue.qsize: 512
    ***** 102 **** queue is empty
    ***** queue.get, train_queue.qsize: 1233
    ***** 189 **** queue is empty
    ***** queue.get, train_queue.qsize: 1865
    

0 个答案:

没有答案