homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author pyfm
Recipients pyfm
Date 2016年11月09日.16:05:49
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1478707549.73.0.316930637654.issue28650@psf.upfronthosting.co.za>
In-reply-to
Content
Hi,
I just realized that the ThreadPoolExecutor's workers do not call task_done() on the work_queue from which they took their task.
Or is there a reason for not calling task_done that I am missing?
Calling task_done decrements the queue's unfinished_tasks counter which could be used to improve the reuse of idle threads (see bquinlan's comment, Lib/concurrent/futures/thread.py:l124).
I am thinking of something like
if self._work_queue.unfinished_tasks > len(self._threads) and len(self._threads) < self._max_workers:
One could still construct cases in which threads are created unnecessarily but it should improve the situation in most cases.
(proposed patch is based on Python-3.6.0b3)
History
Date User Action Args
2016年11月09日 16:05:49pyfmsetrecipients: + pyfm
2016年11月09日 16:05:49pyfmsetmessageid: <1478707549.73.0.316930637654.issue28650@psf.upfronthosting.co.za>
2016年11月09日 16:05:49pyfmlinkissue28650 messages
2016年11月09日 16:05:49pyfmcreate

AltStyle によって変換されたページ (->オリジナル) /