<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Adding active/idle/total worker counts for both ThreadPoolExecutor and ProcessPoolExecutor is pretty straightforward; I just threw a patch together for both in 30 minutes or so. However, I don't think its possible to inspect the contents of a ProcessPoolExecutor's queue without actually consuming items from it. While it *is* possible with ThreadPoolExecutor, I don't think we should expose it - the queue.Queue() implementation ThreadPoolExecutor relies on doesn't have a public API for inspecting its contents, so ThreadPoolExecutor probably shouldn't expose one, either. Identifying which task each worker is processing is possible, but would perhaps require more work than its worth, at least for ProcessPoolExecutor.</span><div>

<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">I do think adding worker count APIs is reasonable, and in-line with a TODO item in the ThreadPoolExecutor source:</span><div style="font-family:arial,sans-serif;font-size:13px">

<br></div><div style="font-family:arial,sans-serif;font-size:13px"><div>   # TODO(bquinlan): Should avoid creating new threads if there are more</div><div>   # idle threads than items in the work queue.</div></div><div style="font-family:arial,sans-serif;font-size:13px">

<br></div><div style="font-family:arial,sans-serif;font-size:13px">So, at the very least there have been plans to internally keep track active/idle thread counts. If others agree it's a good idea, I'll open an issue on the tracker for this and include my patch (which also addresses that TODO item).</div>

</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Aug 24, 2014 at 5:41 PM, Ram Rachum <span dir="ltr"><<a href="mailto:ram.rachum@gmail.com" target="_blank">ram.rachum@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Sometimes I want to take a live executor, like a `ThreadPoolExecutor`, and check up on it. I want to know how many threads there are, how many are handling tasks and which tasks, how many are free, and which tasks are in the queue.<div>

<br></div><div>I asked on Stack Overflow: <a href="http://stackoverflow.com/questions/25474204/checking-up-on-a-concurrent-futures-threadpoolexecutor" target="_blank">http://stackoverflow.com/questions/25474204/checking-up-on-a-concurrent-futures-threadpoolexecutor</a></div>

<div><br></div><div>There's an answer there, but it uses private variables and it's not part of the API.</div><div><br></div><div>I suggest it become a part of the API. There should be an API for checking on what the executor is currently doing and answering all the questions I raised above.</div>

<div><br></div><div><br></div><div>Thanks,</div><div>Ram.</div></div><br>_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank">http://python.org/psf/codeofconduct/</a><br></blockquote></div><br></div>