Message280410
| 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:49 | pyfm | set | recipients:
+ pyfm |
| 2016年11月09日 16:05:49 | pyfm | set | messageid: <1478707549.73.0.316930637654.issue28650@psf.upfronthosting.co.za> |
| 2016年11月09日 16:05:49 | pyfm | link | issue28650 messages |
| 2016年11月09日 16:05:49 | pyfm | create |
|