On Jan 3, 2020, at 10:11, Miguel Ángel Prosper <miguelangel.pros...@gmail.com> 
wrote:
> 
> 
>> 
>> Having a way to clear the queue and then shutdown once existing jobs are 
>> done is a lot
>> more manageable.
> ...
>> So the only clean way to do this is cooperative: flush the queue, send some 
>> kind of
>> message to all children telling them to finish as quickly as possible, then 
>> wait for them
>> to finish.
> 
> I was personally thinking of an implementation like that, cancel all still in 
> pending and if wait is true the wait for the ones running, for both 
> implementations.

OK, that makes sense. And it seems like it should be implementable; the only 
hard part is identifying all the edge cases and verifying they all do the right 
thing for both threads and processes.

But I don’t think “terminate” is the right name. Maybe “cancel”? Or even 
“shutdown(wait=whatever, cancel=True)?”

I think Java inspired this library, so maybe it’s worth looking at what they 
do. But IIRC, it’s a much more complicated API in general, and for this case 
you’d actually have to do something like this:

    x.shutdown() # stop new submissions
    x.cancelAll() # cancel all tasks still in the queue
    x.purge() # remove and handle all canceled tasks
    x.join() # wait for already-started tasks to finish

… which probably isn’t what we want.

> I didn't actually meant terminate literally, I just called it that as that's 
> what multiprocessing.dummy.Pool.terminate (+ join after) does.

IIRC, it only does that by accident, because dummy.Process.terminate is a 
no-op, and that isn’t documented but just happens to be what CPython does.


_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LZEKK6EWMPMBNGJSVZ4YGGAW5Y6OTV6G/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to