[New-bugs-announce] [issue29603] More informative Queue class: new method that returns number of unfinished tasks

slytomcat report at bugs.python.org
Mon Feb 20 04:12:24 EST 2017


New submission from slytomcat:

Class queue.Queue control the number of unfinished tasks via method task_done(). But it is only possible to get the information about all task done (via join() method). 
I'm sure that exposing the number of unfinished tasks (unfinished_tasks class variable) can be very useful in many situations when you need more control over the process.

But it is not good idea to provide write access to this internal variable (as it controls internal queue class status). Better way - provide RO access via class method like qsize or empty. It can be look like this:

    def unfinished(self):
        return self.unfinished_tasks


One example of this method usage: there is not optimal function _adjust_thread_count in concurrent.futures.ThreadPoolExecutor with following comment: 
    # TODO(bquinlan): Should avoid creating new threads if there are more
    # idle threads than items in the work queue.

It can be easily done with following condition:

    if self._work_queue.unfinished() <= len(self._threads):
        return

----------
components: Library (Lib)
messages: 288189
nosy: rhettinger, slytomcat
priority: normal
severity: normal
status: open
title: More informative Queue class: new method that returns number of unfinished tasks
versions: Python 3.7

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue29603>
_______________________________________


More information about the New-bugs-announce mailing list