Skip to content

Commit b5e86c4

Browse files
authored
Update README.md
1 parent fc42c0d commit b5e86c4

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

README.md

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,47 @@ asyncio.run(main())
8989
Feature demo:
9090
```Python3
9191
# feature_demo.py
92-
93-
92+
from ThreadPoolExecutorPlus import ThreadPoolExecutor
93+
import time , datetime
94+
95+
def log(stmt , name = 'MAIN THREAD'):
96+
print(f"[{datetime.datetime.strftime(datetime.datetime.now() , '%Y-%m-%d %H:%M:%S')}][{name}] {stmt}")
97+
98+
def some_func(arg):
99+
# does some heavy lifting
100+
# outputs some results
101+
log(f"New task triggered in sub thread , sleep {arg} seconds." , 'SUB THREAD ')
102+
time.sleep(arg)
103+
log(f"Terminated." , 'SUB THREAD ')
104+
return arg
105+
106+
with ThreadPoolExecutor() as executor:
107+
log(f"max_workers = {executor._max_workers}")
108+
log(f"min_workers = {executor._min_workers}")
109+
log("====================================================")
110+
111+
log("Reuse test:")
112+
for _ in range(10):
113+
executor.submit(some_func , 0.5)
114+
time.sleep(1)
115+
log(f"Current poll size = {len(executor._threads)}")
116+
117+
# Thus it perfer to reuse existing threads.
118+
log("====================================================")
119+
120+
log("Shrink test:")
121+
log("Adjust timeout time to 10 seconds.")
122+
executor.set_daemon_opts(min_workers = 2 , max_workers = 10 , keep_alive_time = 10)
123+
for _ in range(10):
124+
executor.submit(some_func , 3)
125+
time.sleep(0.01)
126+
log("10 new tasks created.")
127+
128+
129+
time.sleep(3)
130+
log("All task done.")
131+
132+
for _ in range(15):
133+
log(f"Current poll size = {len(executor._threads)} , {_ + 1}s passed.")
134+
time.sleep(1)
94135
```

0 commit comments

Comments
 (0)