Issue28650
Created on 2016年11月09日 16:05 by pyfm, last changed 2022年04月11日 14:58 by admin.
| Files |
| File name |
Uploaded |
Description |
Edit |
|
thread.py.patch
|
pyfm,
2016年11月09日 16:05
|
Proposal of a patch |
| Messages (1) |
|
msg280410 - (view) |
Author: pyfm (pyfm) |
Date: 2016年11月09日 16:05 |
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 |
| 2022年04月11日 14:58:39 | admin | set | github: 72836 |
| 2016年11月09日 16:05:49 | pyfm | create |