Python Forum

Full Version: Will JoinableQueue.join() always notice the counter reaching 0?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
If I have two processes communicating through a JoinableQueue, and I do the following:

process 1:

    queue.put(1) #unfished tasks = 1
    queue.join() #block until unfished tasks = 0
    print('hello')
process 2:

    queue.get() 
    queue.task_done() #unfished tasks = 0
    queue.put(1) #unfinished tasks 1
the unfished tasks refers to what is written in the documentation

will 'hello' always be printed? Or is there a chance that the put in process 2 executes before process 1 noticed that it should unblock?

It seems that the whole point of join() is that 'hello' should always be printed, but I just want to make sure that I understand it correctly.
I think 'hello' will be printed, but haven't used this method of multiprocessing, so suggest viewing the following webpage, where there are many examples of using join and task_done here: https://www.programcreek.com/python/exam...nableQueue